{"id":25844,"date":"2021-06-05T14:21:00","date_gmt":"2021-06-05T11:21:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=25844"},"modified":"2021-10-17T18:27:48","modified_gmt":"2021-10-17T15:27:48","slug":"andmete-kirjutamine-onedrive-i-lehele-kasutades-microsoft-graph-api-d-ja-php-d","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/et\/andmete-kirjutamine-onedrive-i-lehele-kasutades-microsoft-graph-api-d-ja-php-d\/","title":{"rendered":"Andmete kirjutamine OneDrive&#8217;i lehele, kasutades Microsoft Graph API-d ja PHP-d"},"content":{"rendered":"<p>Hiljuti avaldasin artikli <a href=\"https:\/\/themewp.inform.click\/et\/kuidas-integreerida-google-i-arvutustabelite-api-php-ga\/\" title=\"Kuidas integreerida Google'i arvutustabelite API PHP-ga,\" >Kuidas integreerida Google&#8217;i arvutustabelite API PHP-ga,<\/a> kus selgitasin, kuidas PHP ja Google API-de abil Google Sheet&#8217;i andmeid kirjutada. \u00dcks lugejatest k\u00fcsis sarnaselt, kuidas andmeid OneDrive&#8217;i lehele kirjutada. Selles \u00f5petuses uurime, kuidas kasutada Microsoft Graph API-d ja PHP-d andmete kirjutamiseks OneDrive&#8217;i lehele.<\/p>\n<p>Microsoft Graph API j\u00e4rgib volituse OAuthi voogu. See t\u00e4hendab, et peame looma juurdep\u00e4\u00e4suloa OAuthi protsessi abil. Selleks peate k\u00f5igepealt rakenduse registreerima ja oma volitused haarama.<\/p>\n<h3>Registreerige rakendus ja looge volitused<\/h3>\n<p>OAuthi protsessi integreerimisel peab teil olema kliendi ID ja kliendi saladus. Selle saate p\u00e4rast rakenduste registreerimist. V\u00f5ib j\u00e4rgida <a href=\"https:\/\/docs.microsoft.com\/en-us\/azure\/active-directory\/develop\/quickstart-register-app\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">sellel lehel<\/a> mainitud samme ja registreerida nende rakendused Microsoftis.<\/p>\n<p>Logige sisse <a href=\"https:\/\/portal.azure.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Azure&#8217;i portaali<\/a> ja seej\u00e4rel otsige rakenduse registreerimine. T\u00e4itke vorm. Peate URL-i edastama v\u00e4ljale Suunamise URI. Sellele v\u00e4ljale edastan kohaliku serveri URL-i. <code>callback.php<\/code>J\u00e4rgmistes sammudes koostan a. Olen t\u00e4itnud \u00fcksikasjad, nagu on n\u00e4idatud alloleval ekraanipildil.<\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20341-6081e1b181786.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20341-6081e1b181786.png\" alt=\"Andmete kirjutamine OneDrive&#039;i lehele, kasutades Microsoft Graph API-d ja PHP-d\" ><\/a><\/p>\n<p>Vormi esitamisel saate vahekaardilt \u00dclevaade kliendi ID.<\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20341-6081e1b219158.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20341-6081e1b219158.png\" alt=\"Andmete kirjutamine OneDrive&#039;i lehele, kasutades Microsoft Graph API-d ja PHP-d\" ><\/a><\/p>\n<p>J\u00e4rgmisena minge vahekaardile &quot;Sertifikaadid ja saladused&quot; ja kl\u00f5psake nuppu &quot;Uus kliendi saladus&quot;.<\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20341-6081e1b2bab8e.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20341-6081e1b2bab8e.png\" alt=\"Andmete kirjutamine OneDrive&#039;i lehele, kasutades Microsoft Graph API-d ja PHP-d\" ><\/a><\/p>\n<p>See avab h\u00fcpiku, kuhu peate lisama kirjelduse ja valima valiku Aegub.<\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20341-6081e1b2bab8e.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20341-6081e1b2bab8e.png\" alt=\"Andmete kirjutamine OneDrive&#039;i lehele, kasutades Microsoft Graph API-d ja PHP-d\" ><\/a><\/p>\n<p>P\u00e4rast seda saate oma kliendi saladuse, nagu allpool n\u00e4idatud.<\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20341-6081e1b2bab8e.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20341-6081e1b2bab8e.png\" alt=\"Andmete kirjutamine OneDrive&#039;i lehele, kasutades Microsoft Graph API-d ja PHP-d\" ><\/a><\/p>\n<h4>Installige vajalikud paketid<\/h4>\n<p>Peame integreerima kaks asja &#8211; OAuthi ja REST API. OAuthi jaoks kavatsen kasutada <a href=\"https:\/\/hybridauth.github.io\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Hybridauthi<\/a> teeki. Ja suhtlemiseks Microsoft Graph API-ga kasutame <a href=\"https:\/\/docs.guzzlephp.org\/en\/stable\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Guzzle&#8217;i<\/a> teeki.<\/p>\n<p>Composeri abil saame need kaks paketti h\u00f5lpsasti installida. Looge <code>composer.json<\/code>oma projekti juurkataloogis fail ja lisage sellele alla read.<\/p>\n<pre><code>{\n\u00a0\u00a0\u00a0\u00a0\"require\": {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"hybridauth\/hybridauth\": \"~3.0\",\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"guzzlehttp\/guzzle\": \"^7.0\"\n\u00a0\u00a0\u00a0\u00a0}\n}<\/code><\/pre>\n<p>K\u00e4ivitage allpool k\u00e4sk, mis need paketid installib.<\/p>\n<pre><code>composer install<\/code><\/pre>\n<p>Nagu \u00f6eldud, kasutab Microsoft Graph API API toimingute tegemiseks OAuthi. See n\u00f5uab, et genereeriksite juurdep\u00e4\u00e4suloa, mis toimib teie konto identifikaatorina. Selle juurdep\u00e4\u00e4suloa abil kontrollivad Microsoft Graphi API-d, kas sissetulev taotlus on kehtiv ja volitatud.<\/p>\n<p>Juurdep\u00e4\u00e4su m\u00e4rgil on l\u00fchike eluiga. Need aeguvad varsti. Ja kui aegumine on l\u00f5ppenud, ei saa me API-k\u00f5nesid teha, kuna Microsoft k\u00e4sitleb aegunud m\u00e4rgiga p\u00e4ringut volitamata taotlusena. Selle probleemi lahendamiseks kasutame taustal juurdep\u00e4\u00e4su loa taastamiseks parameetrit &#8216;refresh_token&#8217;. Nii t\u00f6\u00f6tab OAuth.<\/p>\n<h3>Andmebaasi seadistamine<\/h3>\n<p>Eesm\u00e4rgi saavutamiseks peame m\u00e4rgi s\u00e4ilitama kindlas kohas. API-de kutsumisel vajame luba. Samuti peaks see p\u00e4rast selle aegumist taastuma. Nii et luba \u00fcksikasjade salvestamiseks looge andmebaasitabel j\u00e4rgmiselt.<\/p>\n<pre><code>CREATE TABLE `token` (\u00a0`id` int(11) NOT NULL AUTO_INCREMENT,\n\u00a0`access_token` text NOT NULL,\n\u00a0PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;<\/code><\/pre>\n<p>Lisame loa andmebaasi p\u00e4rast autoriseerimisprotsessi l\u00f5petamist. Samuti v\u00e4rskendame taustal m\u00e4rki. Selleks kavatsen luua andmebaasiklassi, et saaksime h\u00f5lpsalt teha sisestamise, valimise ja v\u00e4rskendamise toiminguid.<\/p>\n<p><strong>klass-db.php<\/strong><\/p>\n<pre><code>&lt;?php\nclass DB {\n\u00a0\u00a0\u00a0\u00a0private $dbHost\u00a0\u00a0\u00a0\u00a0 = \"DB_HOST\";\n\u00a0\u00a0\u00a0\u00a0private $dbUsername = \"DB_USERNAME\";\n\u00a0\u00a0\u00a0\u00a0private $dbPassword = \"DB_PASSWORD\";\n\u00a0\u00a0\u00a0\u00a0private $dbName\u00a0\u00a0\u00a0\u00a0 = \"DB_NAME\";\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0public function __construct(){\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if(!isset($this-&gt;db)){\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ Connect to the database\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$conn = new mysqli($this-&gt;dbHost, $this-&gt;dbUsername, $this-&gt;dbPassword, $this-&gt;dbName);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if($conn-&gt;connect_error){\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0die(\"Failed to connect with MySQL: \". $conn-&gt;connect_error);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}else{\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$this-&gt;db = $conn;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0public function is_table_empty() {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$result = $this-&gt;db-&gt;query(\"SELECT id FROM token\");\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if($result-&gt;num_rows) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return false;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return true;\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0public function get_access_token() {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$sql = $this-&gt;db-&gt;query(\"SELECT access_token FROM token\");\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$result = $sql-&gt;fetch_assoc();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return json_decode($result['access_token']);\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0public function get_refersh_token() {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$result = $this-&gt;get_access_token();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return $result-&gt;refresh_token;\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0public function update_access_token($token) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if($this-&gt;is_table_empty()) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$this-&gt;db-&gt;query(\"INSERT INTO token(access_token) VALUES('$token')\");\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0} else {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$this-&gt;db-&gt;query(\"UPDATE token SET access_token = '$token' WHERE id = (SELECT id FROM token)\");\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0}\n}<\/code><\/pre>\n<h3>Loo juurdep\u00e4\u00e4suluba<\/h3>\n<p>Kui olete valmis vajalike pakettide ja andmebaasiklassiga, on j\u00e4rgmine osa autentimine ja m\u00e4rgistusandmete salvestamine andmebaasi.<\/p>\n<p>Hybridauthi teek pakub autoriseerimiseks oma protsessi. Niisiis, j\u00e4rgime neid. Looge <code>config.php<\/code>fail ja lisage sellesse allolev kood.<\/p>\n<p><strong>config.php<\/strong><\/p>\n<pre><code>&lt;?php\nrequire_once 'vendor\/autoload.php';\nrequire_once 'class-db.php';\n\u00a0\ndefine('ONEDRIVE_CLIENT_ID', 'CLIENT_ID_HERE');\ndefine('ONEDRIVE_CLIENT_SECRET', 'CLIENT_SECRET_HERE');\ndefine('ONEDRIVE_SCOPE', 'files.read files.read.all files.readwrite files.readwrite.all offline_access');\ndefine('ONEDRIVE_CALLBACK_URL', 'CALLBACK_URL_HERE'); \/\/ in my case it is http:\/\/localhost\/sajid\/onedrive\/callback.php\n\u00a0\n$config = [\n\u00a0\u00a0\u00a0\u00a0'callback' =&gt; ONEDRIVE_CALLBACK_URL,\n\u00a0\u00a0\u00a0\u00a0'keys'\u00a0\u00a0\u00a0\u00a0 =&gt; [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'id' =&gt; ONEDRIVE_CLIENT_ID,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'secret' =&gt; ONEDRIVE_CLIENT_SECRET\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0],\n\u00a0\u00a0\u00a0\u00a0'scope'\u00a0\u00a0\u00a0 =&gt; ONEDRIVE_SCOPE,\n\u00a0\u00a0\u00a0\u00a0'authorize_url_parameters' =&gt; [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'approval_prompt' =&gt; 'force',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'access_type' =&gt; 'offline'\n\u00a0\u00a0\u00a0\u00a0]\n];\n\u00a0\n$adapter = new HybridauthProviderMicrosoftGraph( $config );<\/code><\/pre>\n<p>Asendage k\u00f5ik kohahoidjad nende tegelike v\u00e4\u00e4rtustega. Olen l\u00e4binud meie l\u00f5ppeesm\u00e4rgi jaoks n\u00f5utavad ulatused, nii et hoidke seda nii, nagu see on. N\u00fc\u00fcd, <code>callback.php<\/code>mis on minu tagasihelistamise URL, kirjutan koodi, mis k\u00e4ivitab autentimisprotsessi, suunab selle p\u00e4rast edukat autoriseerimist ja salvestab m\u00e4rkide teabe andmebaasi tabelisse.<\/p>\n<p><strong>callback.php<\/strong><\/p>\n<pre><code>&lt;?php\nrequire_once 'config.php';\n\u00a0\ntry {\n\u00a0\u00a0\u00a0\u00a0$adapter-&gt;authenticate();\n\u00a0\u00a0\u00a0\u00a0$token = $adapter-&gt;getAccessToken();\n\u00a0\u00a0\u00a0\u00a0$db = new DB();\n\u00a0\u00a0\u00a0\u00a0if($db-&gt;is_table_empty()) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$db-&gt;update_access_token(json_encode($token));\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo \"Access token inserted successfully.\";\n\u00a0\u00a0\u00a0\u00a0}\n}\ncatch( Exception $e ){\n\u00a0\u00a0\u00a0\u00a0echo $e-&gt;getMessage() ;\n}<\/code><\/pre>\n<p>K\u00e4ivitage <code>callback.php<\/code>brauseris brauser, viige autentimisprotsess l\u00f5pule. P\u00e4rast autentimise l\u00f5puleviimist peaksite n\u00e4gema m\u00e4rkide \u00fcksikasjad, mis on salvestatud tabelisse \u201em\u00e4rgid&quot;.<\/p>\n<h3>Lisage tabel OneDrive&#8217;i lehele<\/h3>\n<p>Andmete lisamiseks Microsoft Graph API kaudu peate sisestama OneDrive&#8217;i lehele tabeli. Minge OneDrive&#8217;i lehele. Kl\u00f5psake rippmen\u00fc\u00fc \u201eUus&#8221; all \u201eExceli t\u00f6\u00f6vihik&#8221;.<\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20341-6081e1b2bab8e.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20341-6081e1b2bab8e.png\" alt=\"Andmete kirjutamine OneDrive&#039;i lehele, kasutades Microsoft Graph API-d ja PHP-d\" ><\/a><\/p>\n<p>Kui olete lehelehel, kl\u00f5psake avatud h\u00fcpikakna ikooni &quot;Tabel&quot; ja seej\u00e4rel nuppu &quot;OK&quot;.<\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20341-6081e1b2bab8e.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20341-6081e1b2bab8e.png\" alt=\"Andmete kirjutamine OneDrive&#039;i lehele, kasutades Microsoft Graph API-d ja PHP-d\" ><\/a><\/p>\n<p>P\u00e4rast seda n\u00e4ete oma OneDrive&#8217;i lehele sisestatud tabelit j\u00e4rgmiselt.<\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20341-6081e1b2bab8e.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20341-6081e1b2bab8e.png\" alt=\"Andmete kirjutamine OneDrive&#039;i lehele, kasutades Microsoft Graph API-d ja PHP-d\" ><\/a><\/p>\n<p>Kohandage veerge vastavalt oma vajadustele. Minu puhul hoidsin 3 veergu.<\/p>\n<p>N\u00fc\u00fcd v\u00f5ib k\u00fcsida, miks on vaja tabelisse lehte sisestada? Seda teemat uurides leidsin, et see on ainus viis andmete kirjutamiseks Exceli t\u00f6\u00f6vihikusse. Selle kohta saate lugeda nende <a href=\"https:\/\/docs.microsoft.com\/en-us\/graph\/excel-write-to-workbook\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">dokumentatsioonist<\/a>.<\/p>\n<p>Pange t\u00e4hele, kui sisestame tabeli esmakordselt lehte, on selle v\u00e4\u00e4rtus &#8216;Table1&#8217;. Vajame seda v\u00e4\u00e4rtust API-de kutsumisel. Kui mingil p\u00f5hjusel eemaldate tabeli ja sisestate selle uuesti, saab selle v\u00e4\u00e4rtuseks tabel2 jne.<\/p>\n<p>Kopeerige oma API lehe ID jaoks vajalik ID. Selle saate brauseri URL-ist, nagu on n\u00e4idatud alloleval ekraanipildil.<\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20341-6081e1b2bab8e.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20341-6081e1b2bab8e.png\" alt=\"Andmete kirjutamine OneDrive&#039;i lehele, kasutades Microsoft Graph API-d ja PHP-d\" ><\/a><\/p>\n<h3>Andmete kirjutamine OneDrive&#8217;i lehele Microsoft Graph API ja PHP abil<\/h3>\n<p>Siiani oleme valmis vajalike pakettide installimisega, m\u00e4rkide sisestamisega andmebaasi, Exceli t\u00f6\u00f6vihiku loomisega, milles on tabel. N\u00fc\u00fcd on meil hea j\u00e4tkata ja kirjutada kood, mis lisab andmed OneDrive&#8217;i lehele Microsoft Graph API ja PHP abil.<\/p>\n<p>Ma loon faili <code>append-to-onedrive-sheet.php<\/code>ja minu kood on selline, nagu allpool kirjas.<\/p>\n<pre><code>&lt;?php\nrequire_once 'config.php';\n\u00a0\n\/\/ here you can pass as many data as a separate array element\n$arr_data = [\n\u00a0\u00a0\u00a0\u00a0['John Doe', 'john@test.com', '8888888888']\n];\n\u00a0\nappend_to_sheet($arr_data);\n\u00a0\nfunction append_to_sheet($arr_data = array()) {\n\u00a0\u00a0\u00a0\u00a0$item_id = 'YOUR_SHEET_ID';\n\u00a0\u00a0\u00a0\u00a0$table = 'Table1'; \/\/in your case it can be Table2, Table3, ...\n\u00a0\n\u00a0\u00a0\u00a0\u00a0$db = new DB();\n\u00a0\n\u00a0\u00a0\u00a0\u00a0$arr_token = (array) $db-&gt;get_access_token();\n\u00a0\u00a0\u00a0\u00a0$accessToken = $arr_token['access_token'];\n\u00a0\n\u00a0\u00a0\u00a0\u00a0try {\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$client = new GuzzleHttpClient([\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ Base URI is used with relative requests\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'base_uri' =&gt; 'https:\/\/graph.microsoft.com',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0]);\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$response = $client-&gt;request(\"POST\", \"\/v1.0\/me\/drive\/items\/$item_id\/workbook\/tables\/$table\/rows\/add\", [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'json' =&gt; [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'values' =&gt; $arr_data\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0],\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'headers' =&gt; [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'Authorization' =&gt; 'Bearer '. $accessToken\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0],\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'verify' =&gt; false,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0]);\n\u00a0\u00a0\u00a0\u00a0} catch(Exception $e) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if( 401 == $e-&gt;getCode()) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$refresh_token = $db-&gt;get_refersh_token();\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$client = new GuzzleHttpClient(['base_uri' =&gt; 'https:\/\/login.microsoftonline.com']);\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$response = $client-&gt;request('POST', '\/common\/oauth2\/v2.0\/token', [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'form_params' =&gt; [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"grant_type\" =&gt; \"refresh_token\",\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"refresh_token\" =&gt; $refresh_token,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"client_id\" =&gt; ONEDRIVE_CLIENT_ID,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"client_secret\" =&gt; ONEDRIVE_CLIENT_SECRET,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"scope\" =&gt; ONEDRIVE_SCOPE,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"redirect_uri\" =&gt; ONEDRIVE_CALLBACK_URL,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0],\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0]);\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$db-&gt;update_access_token($response-&gt;getBody());\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0append_to_sheet($arr_data);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0} else {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo $e-&gt;getMessage(); \/\/print the error just in case your video is not uploaded.\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0}\n}<\/code><\/pre>\n<p>\u00dclalolevas koodis l\u00f5in massiivi, millel on 3 v\u00e4\u00e4rtusega massiivi element. V\u00f5ite edastada nii palju massiivi elemente. <code>$item_id<\/code>Muutujale peate edastama oma lehe ID .<\/p>\n<p>See kood t\u00f5mbab andmebaasist juurdep\u00e4\u00e4suloa ja saadab POST-p\u00e4ringu vajalikule API-l\u00f5pp-punktile. Kui luba aegub, taastab see selle automaatselt taustal ja j\u00e4tkab protsessi.<\/p>\n<p>Proovige seda ja peaksite n\u00e4gema, et teie andmed on lisatud teie OneDrive&#8217;i konto Exceli t\u00f6\u00f6vihikule.<\/p>\n<p>Loodetavasti saite teada, kuidas kirjutada andmeid OneDrive&#8217;i lehele Microsoft Graph API ja PHP abil. Palun jagage oma m\u00f5tteid ja ettepanekuid allpool olevas kommentaaride jaotises.<\/p>\n<h4>seotud artiklid<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/et\/kone-tekstiks-kasutades-php-s-amazon-transcribe-i\/\" title=\"K\u00f5ne tekstiks, kasutades PHP-s Amazon Transcribe&#039;i\">K\u00f5ne tekstiks, kasutades PHP-s Amazon Transcribe&#8217;i<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/et\/saada-e-kirju-php-s-mailjeti-alternatiiv-gmaili-smtp-serverile-abil\/\" title=\"Saada e-kirju PHP-s Mailjeti abil\">Saada e-kirju PHP-s Mailjeti abil<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/et\/paypali-makseluusi-integreerimine-php-s-kasutades-paypal-rest-api-d\/\" title=\"PayPali maksel\u00fc\u00fcsi integreerimine PHP-s, kasutades PayPal REST API-d\">PayPali maksel\u00fc\u00fcsi integreerimine PHP-s, kasutades PayPal REST API-d<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Selles artiklis uurime, kuidas kirjutada andmeid OneDrive&#8217;i lehele Microsoft Graph API ja PHP abil. Microsoft Graph API j\u00e4rgib domeeni OAuth voogu<\/p>\n","protected":false},"author":1,"featured_media":20342,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[206,274],"tags":[842],"class_list":["post-25844","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-elementor-5","category-php-5","tag-affiai-et"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/posts\/25844","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/comments?post=25844"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/posts\/25844\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/media\/20342"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/media?parent=25844"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/categories?post=25844"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/et\/wp-json\/wp\/v2\/tags?post=25844"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}