{"id":25336,"date":"2021-06-05T14:26:00","date_gmt":"2021-06-05T11:26:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=25336"},"modified":"2021-10-17T20:26:09","modified_gmt":"2021-10-17T17:26:09","slug":"kirjoita-tiedot-onedrive-taulukkoon-microsoft-graph-api-n-ja-php-n-avulla","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/fi\/kirjoita-tiedot-onedrive-taulukkoon-microsoft-graph-api-n-ja-php-n-avulla\/","title":{"rendered":"Kirjoita tiedot OneDrive-taulukkoon Microsoft Graph API: n ja PHP: n avulla"},"content":{"rendered":"<p>\u00c4skett\u00e4in olen julkaissut artikkelin <a href=\"https:\/\/themewp.inform.click\/fi\/kuinka-integroida-google-sheets-sovellusliittyma-php-hen\/\" title=\"Kuinka integroida Google Sheets -sovellusliittym\u00e4 PHP: hen,\" >Kuinka integroida Google Sheets -sovellusliittym\u00e4 PHP: hen,<\/a> jossa selitin kuinka kirjoittaa tietoja Google-taulukkoon PHP- ja Google-sovellusliittymien avulla. Yksi lukijoista kysyi samalla tavalla, kuinka kirjoittaa tietoja OneDrive-taululle. T\u00e4ss\u00e4 opetusohjelmassa tutkitaan, miten Microsoft Graph -sovellusliittym\u00e4\u00e4 ja PHP: t\u00e4 k\u00e4ytet\u00e4\u00e4n tietojen kirjoittamiseen OneDrive-taulukkoon.<\/p>\n<p>Microsoft Graph -sovellusliittym\u00e4 noudattaa OAuth-kulkua valtuutuksessa. T\u00e4m\u00e4 tarkoittaa, ett\u00e4 meid\u00e4n on luotava k\u00e4ytt\u00f6oikeustunnus k\u00e4ytt\u00e4m\u00e4ll\u00e4 OAuth-prosessia. T\u00e4t\u00e4 varten sinun on ensin rekister\u00f6it\u00e4v\u00e4 sovellus ja napattava tunnistetiedot.<\/p>\n<h3>Rekister\u00f6i sovellus ja luo kirjautumistiedot<\/h3>\n<p>OAuth-prosessin integroinnin aikana sinulla on oltava asiakastunnus ja asiakassalaisuus. Saat sen rekister\u00f6im\u00e4ll\u00e4 sovellukset. Voit seurata <a href=\"https:\/\/docs.microsoft.com\/en-us\/azure\/active-directory\/develop\/quickstart-register-app\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">t\u00e4ll\u00e4 sivulla<\/a> mainittuja vaiheita ja rekister\u00f6id\u00e4 sovelluksensa Microsoftiin.<\/p>\n<p>Kirjaudu <a href=\"https:\/\/portal.azure.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Azure-portaaliin<\/a> ja etsi sitten sovelluksen rekister\u00f6inti. T\u00e4yt\u00e4 lomake. Sinun on v\u00e4litett\u00e4v\u00e4 URL-osoite Uudelleenohjauksen URI-kentt\u00e4\u00e4n. T\u00e4h\u00e4n kentt\u00e4\u00e4n v\u00e4lit\u00e4n paikallisen palvelimen URL-osoitteen. Luon <code>callback.php<\/code>seuraavissa vaiheissa. Olen t\u00e4ytt\u00e4nyt yksityiskohdat alla olevan kuvakaappauksen mukaisesti.<\/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=\"Kirjoita tiedot OneDrive-taulukkoon Microsoft Graph API: n ja PHP: n avulla\" ><\/a><\/p>\n<p>Kun l\u00e4het\u00e4t lomakkeen, saat asiakastunnuksen Yleiskatsaus-v\u00e4lilehdelt\u00e4.<\/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=\"Kirjoita tiedot OneDrive-taulukkoon Microsoft Graph API: n ja PHP: n avulla\" ><\/a><\/p>\n<p>Siirry seuraavaksi Sertifikaatit ja salaisuudet -v\u00e4lilehdelle ja napsauta Uusi asiakassalaisuus.<\/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=\"Kirjoita tiedot OneDrive-taulukkoon Microsoft Graph API: n ja PHP: n avulla\" ><\/a><\/p>\n<p>Se avaa ponnahdusikkunan, johon sinun on lis\u00e4tt\u00e4v\u00e4 kuvaus ja valittava Vanhenee-vaihtoehto.<\/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=\"Kirjoita tiedot OneDrive-taulukkoon Microsoft Graph API: n ja PHP: n avulla\" ><\/a><\/p>\n<p>T\u00e4m\u00e4n j\u00e4lkeen saat asiakassalaisuutesi alla olevan kuvan mukaisesti.<\/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=\"Kirjoita tiedot OneDrive-taulukkoon Microsoft Graph API: n ja PHP: n avulla\" ><\/a><\/p>\n<h4>Asenna vaaditut paketit<\/h4>\n<p>Meid\u00e4n on integroitava kaksi asiaa &#8211; OAuth ja REST API. OAuth-palvelussa aion k\u00e4ytt\u00e4\u00e4 <a href=\"https:\/\/hybridauth.github.io\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Hybridauth-<\/a> kirjastoa. Ja <a href=\"https:\/\/docs.guzzlephp.org\/en\/stable\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">ollaksemme<\/a> vuorovaikutuksessa Microsoft Graph API: n kanssa, k\u00e4ytet\u00e4\u00e4n <a href=\"https:\/\/docs.guzzlephp.org\/en\/stable\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Guzzle-<\/a> kirjastoa.<\/p>\n<p>Voimme helposti asentaa n\u00e4m\u00e4 2 pakettia Composerin avulla. Luo <code>composer.json<\/code>tiedosto projektin juurihakemistoon ja lis\u00e4\u00e4 siihen alla olevat rivit.<\/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>Suorita alla oleva komento, joka asentaa n\u00e4m\u00e4 paketit.<\/p>\n<pre><code>composer install<\/code><\/pre>\n<p>Kuten sanottu, Microsoft Graph -sovellusliittym\u00e4 k\u00e4ytt\u00e4\u00e4 OAuthia API-toimintojen suorittamiseen. Se vaatii sinua luomaan k\u00e4ytt\u00f6oikeustunnuksen, joka toimii tilisi tunnuksena. T\u00e4m\u00e4n k\u00e4ytt\u00f6oikeustunnuksen avulla Microsoft Graph -sovellusliittym\u00e4t tarkistavat, onko saapuva pyynt\u00f6 kelvollinen ja valtuutettu.<\/p>\n<p>K\u00e4ytt\u00f6oikeustunnuksella on lyhyt k\u00e4ytt\u00f6ik\u00e4. Ne vanhenevat pian. Ja kun se on vanhentunut, emme voi suorittaa API-kutsuja, koska Microsoft k\u00e4sittelee pyynt\u00f6\u00e4 vanhentuneella tunnuksella luvattomana pyynn\u00f6n\u00e4. Ratkaistaksemme t\u00e4m\u00e4n ongelman k\u00e4yt\u00e4mme &#8217;refresh_token&#8217; -toimintoa k\u00e4ytt\u00f6oikeustunnuksen luomiseen taustalla. N\u00e4in OAuth toimii.<\/p>\n<h3>Tietokannan kokoonpano<\/h3>\n<p>Tavoitteen saavuttamiseksi meid\u00e4n on s\u00e4ilytett\u00e4v\u00e4 tunnus turvallisessa paikassa. Tarvitsemme tunnuksen, kun soitamme sovellusliittymi\u00e4. Sen pit\u00e4isi my\u00f6s uusiutua sen vanhenemisen j\u00e4lkeen. Joten tallentaaksesi tunnuksen tiedot, luo tietokantataulukko seuraavasti.<\/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>Lis\u00e4\u00e4mme tunnuksen tietokantaan valtuutusprosessin suorittamisen j\u00e4lkeen. Lis\u00e4ksi p\u00e4ivit\u00e4mme tunnuksen taustalla. T\u00e4t\u00e4 varten aion luoda tietokantaluokan, jotta voimme helposti tehd\u00e4 lis\u00e4ys-, valinta- ja p\u00e4ivitystoiminnot.<\/p>\n<p><strong>luokka-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>Luo k\u00e4ytt\u00f6oikeustunnus<\/h3>\n<p>Kun olet valmis tarvittaviin paketteihin ja tietokantaluokkaan, seuraava osa tekee todentamisen ja tallentaa tunnuksen tiedot tietokantaan.<\/p>\n<p>Hybridauth-kirjasto tarjoaa oman prosessin valtuutuksen suorittamiseksi. Joten, seurataan heit\u00e4. Luo <code>config.php<\/code>tiedosto ja lis\u00e4\u00e4 siihen alla oleva koodi.<\/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>Korvaa kaikki paikkamerkit niiden todellisilla arvoilla. Olen l\u00e4p\u00e4issyt vaaditut tavoitteet lopputavoitteellemme, joten pid\u00e4 se sellaisena kuin se on. Nyt, <code>callback.php<\/code>joka on takaisinsoitto-URL-osoitteeni, kirjoitan koodin, joka k\u00e4ynnist\u00e4\u00e4 todennusprosessin, ohjaa siihen onnistuneen valtuutuksen j\u00e4lkeen ja tallentaa tunnustiedot tietokantataulukoon.<\/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>Suorita <code>callback.php<\/code>selain ja suorita todennusprosessi. Kun todennus on suoritettu loppuun, sinun pit\u00e4isi n\u00e4hd\u00e4 tunnuskohtaiset tiedot, jotka on tallennettu merkkitaulukon sis\u00e4\u00e4n.<\/p>\n<h3>Lis\u00e4\u00e4 taulukko OneDrive-taulukossa<\/h3>\n<p>Jos haluat lis\u00e4t\u00e4 tietoja Microsoft Graph -sovellusliittym\u00e4n kautta, sinun on lis\u00e4tt\u00e4v\u00e4 taulukko OneDrive-taulukkoon. Siirry OneDrive-sivulle. Napsauta avattavan Uusi-valikon alla olevaa Excel-ty\u00f6kirjaa.<\/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=\"Kirjoita tiedot OneDrive-taulukkoon Microsoft Graph API: n ja PHP: n avulla\" ><\/a><\/p>\n<p>Kun olet arkkisivulla, napsauta &#8217;Taulukko&#8217; -kuvaketta ja sitten &#8217;OK&#8217; avautuvasta ponnahdusikkunasta.<\/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=\"Kirjoita tiedot OneDrive-taulukkoon Microsoft Graph API: n ja PHP: n avulla\" ><\/a><\/p>\n<p>T\u00e4m\u00e4n j\u00e4lkeen n\u00e4et taulukon, joka on lis\u00e4tty OneDrive-taulukkoosi seuraavasti.<\/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=\"Kirjoita tiedot OneDrive-taulukkoon Microsoft Graph API: n ja PHP: n avulla\" ><\/a><\/p>\n<p>S\u00e4\u00e4d\u00e4 sarakkeita tarpeidesi mukaan. Minun tapauksessani pidin 3 saraketta.<\/p>\n<p>Nyt voidaan kysy\u00e4, miksi taulukko on lis\u00e4tt\u00e4v\u00e4 arkkiin? Kun tutkin t\u00e4t\u00e4 aihetta, huomasin, ett\u00e4 t\u00e4m\u00e4 on ainoa tapa kirjoittaa tietoja Excel-ty\u00f6kirjaan. Voit lukea lis\u00e4\u00e4 heid\u00e4n <a href=\"https:\/\/docs.microsoft.com\/en-us\/graph\/excel-write-to-workbook\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">dokumentaatiostaan<\/a>.<\/p>\n<p>Pid\u00e4 muistiinpano, kun asetamme taulukon ensimm\u00e4ist\u00e4 kertaa taulukkoon, sen arvo on &#8217;Taulukko1&#8217;. Tarvitsemme t\u00e4t\u00e4 arvoa sovellusliittymien kutsumisen yhteydess\u00e4. Jos jostain syyst\u00e4 poistat taulukon ja asetat sen uudelleen, sen arvoksi tulee &#8217;Taulukko2&#8217; ja niin edelleen.<\/p>\n<p>Kopioi sovellusliittym\u00e4kutsussa vaadittava taulukkotunnuksesi. Voit saada sen selaimen URL-osoitteesta alla olevan kuvakaappauksen mukaisesti.<\/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=\"Kirjoita tiedot OneDrive-taulukkoon Microsoft Graph API: n ja PHP: n avulla\" ><\/a><\/p>\n<h3>Kirjoita tiedot OneDrive-arkkiin Microsoft Graph -sovellusliittym\u00e4n ja PHP: n avulla<\/h3>\n<p>Toistaiseksi olemme asentaneet vaaditut paketit, lis\u00e4\u00e4m\u00e4ll\u00e4 tunnuksia tietokantaan, luomalla Excel-ty\u00f6kirjan, jossa on taulukko. Nyt on hyv\u00e4 menn\u00e4 eteenp\u00e4in ja kirjoittaa koodi, joka liitt\u00e4\u00e4 tiedot OneDrive-taulukkoon Microsoft Graph -sovellusliittym\u00e4n ja PHP: n avulla.<\/p>\n<p>Luon tiedostoa, <code>append-to-onedrive-sheet.php<\/code>ja koodini on alla kirjoitettu.<\/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>Yll\u00e4 olevassa koodissa loin taulukon, jossa on 3-arvoinen matriisi-elementti. Voit v\u00e4litt\u00e4\u00e4 niin monta taulukkoelementti\u00e4. Sinun on v\u00e4litett\u00e4v\u00e4 taulukkotunnuksesi <code>$item_id<\/code>muuttujalle.<\/p>\n<p>T\u00e4m\u00e4 koodi hakee k\u00e4ytt\u00f6oikeustunnuksen tietokannasta ja l\u00e4hett\u00e4\u00e4 POST-pyynn\u00f6n vaadittuun API-p\u00e4\u00e4tepisteeseen. Jos tunnus vanhenee, se luo sen automaattisesti taustalla ja jatkaa prosessia.<\/p>\n<p>Kokeile ja sinun pit\u00e4isi n\u00e4hd\u00e4, ett\u00e4 tietosi on liitetty OneDrive-tilisi Excel-ty\u00f6kirjaan.<\/p>\n<p>Toivon, ett\u00e4 sait tiet\u00e4\u00e4 kuinka kirjoittaa tietoja OneDrive-taulukkoon Microsoft Graph -sovellusliittym\u00e4n ja PHP: n avulla. Jaa ajatuksesi ja ehdotuksesi alla olevassa kommenttiosassa.<\/p>\n<h4>Aiheeseen liittyv\u00e4t artikkelit<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/fi\/puhe-tekstiksi-kayttamalla-amazon-transcriptia-php-ssa\/\" title=\"Puhe-tekstiksi k\u00e4ytt\u00e4m\u00e4ll\u00e4 Amazon Transcripti\u00e4 PHP: ss\u00e4\">Puhe-tekstiksi k\u00e4ytt\u00e4m\u00e4ll\u00e4 Amazon Transcripti\u00e4 PHP: ss\u00e4<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/fi\/laheta-sahkopostia-kayttamalla-php-n-mailjet-ohjelmaa-vaihtoehto-gmailin-smtp-palvelimelle\/\" title=\"L\u00e4het\u00e4 s\u00e4hk\u00f6postia Mailjetin avulla PHP: ss\u00e4\">L\u00e4het\u00e4 s\u00e4hk\u00f6postia Mailjetin avulla PHP: ss\u00e4<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/fi\/paypal-maksuyhdyskaytavan-integrointi-php-ssa-kayttaen-paypal-rest-sovellusliittymaa\/\" title=\"PayPal-maksuyhdysk\u00e4yt\u00e4v\u00e4n integrointi PHP: ss\u00e4 k\u00e4ytt\u00e4en PayPal REST -sovellusliittym\u00e4\u00e4\">PayPal-maksuyhdysk\u00e4yt\u00e4v\u00e4n integrointi PHP: ss\u00e4 k\u00e4ytt\u00e4en PayPal REST -sovellusliittym\u00e4\u00e4<\/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>T\u00e4ss\u00e4 artikkelissa tutkitaan, miten tietoja kirjoitetaan OneDrive-taulukkoon Microsoft Graph API: n ja PHP: n avulla. Microsoft Graph -sovellusliittym\u00e4 noudattaa OAuth-kulkua<\/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":[207,275],"tags":[843],"class_list":["post-25336","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-elementor-6","category-php-6","tag-affiai-fi"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/posts\/25336","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/comments?post=25336"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/posts\/25336\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/media\/20342"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/media?parent=25336"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/categories?post=25336"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/fi\/wp-json\/wp\/v2\/tags?post=25336"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}