✅ WEB- ja WordPress -uutiset, -teemat, -laajennukset. Täällä jaamme vinkkejä ja parhaita verkkosivustoratkaisuja.

Kirjoita tiedot OneDrive-taulukkoon Microsoft Graph API: n ja PHP: n avulla

21

Äskettäin olen julkaissut artikkelin Kuinka integroida Google Sheets -sovellusliittymä PHP: hen, jossa selitin kuinka kirjoittaa tietoja Google-taulukkoon PHP- ja Google-sovellusliittymien avulla. Yksi lukijoista kysyi samalla tavalla, kuinka kirjoittaa tietoja OneDrive-taululle. Tässä opetusohjelmassa tutkitaan, miten Microsoft Graph -sovellusliittymää ja PHP: tä käytetään tietojen kirjoittamiseen OneDrive-taulukkoon.

Microsoft Graph -sovellusliittymä noudattaa OAuth-kulkua valtuutuksessa. Tämä tarkoittaa, että meidän on luotava käyttöoikeustunnus käyttämällä OAuth-prosessia. Tätä varten sinun on ensin rekisteröitävä sovellus ja napattava tunnistetiedot.

Rekisteröi sovellus ja luo kirjautumistiedot

OAuth-prosessin integroinnin aikana sinulla on oltava asiakastunnus ja asiakassalaisuus. Saat sen rekisteröimällä sovellukset. Voit seurata tällä sivulla mainittuja vaiheita ja rekisteröidä sovelluksensa Microsoftiin.

Kirjaudu Azure-portaaliin ja etsi sitten sovelluksen rekisteröinti. Täytä lomake. Sinun on välitettävä URL-osoite Uudelleenohjauksen URI-kenttään. Tähän kenttään välitän paikallisen palvelimen URL-osoitteen. Luon callback.phpseuraavissa vaiheissa. Olen täyttänyt yksityiskohdat alla olevan kuvakaappauksen mukaisesti.

Kirjoita tiedot OneDrive-taulukkoon Microsoft Graph API: n ja PHP: n avulla

Kun lähetät lomakkeen, saat asiakastunnuksen Yleiskatsaus-välilehdeltä.

Kirjoita tiedot OneDrive-taulukkoon Microsoft Graph API: n ja PHP: n avulla

Siirry seuraavaksi Sertifikaatit ja salaisuudet -välilehdelle ja napsauta Uusi asiakassalaisuus.

Kirjoita tiedot OneDrive-taulukkoon Microsoft Graph API: n ja PHP: n avulla

Se avaa ponnahdusikkunan, johon sinun on lisättävä kuvaus ja valittava Vanhenee-vaihtoehto.

Kirjoita tiedot OneDrive-taulukkoon Microsoft Graph API: n ja PHP: n avulla

Tämän jälkeen saat asiakassalaisuutesi alla olevan kuvan mukaisesti.

Kirjoita tiedot OneDrive-taulukkoon Microsoft Graph API: n ja PHP: n avulla

Asenna vaaditut paketit

Meidän on integroitava kaksi asiaa – OAuth ja REST API. OAuth-palvelussa aion käyttää Hybridauth- kirjastoa. Ja ollaksemme vuorovaikutuksessa Microsoft Graph API: n kanssa, käytetään Guzzle- kirjastoa.

Voimme helposti asentaa nämä 2 pakettia Composerin avulla. Luo composer.jsontiedosto projektin juurihakemistoon ja lisää siihen alla olevat rivit.

{
    "require": {
        "hybridauth/hybridauth": "~3.0",
        "guzzlehttp/guzzle": "^7.0"
    }
}

Suorita alla oleva komento, joka asentaa nämä paketit.

composer install

Kuten sanottu, Microsoft Graph -sovellusliittymä käyttää OAuthia API-toimintojen suorittamiseen. Se vaatii sinua luomaan käyttöoikeustunnuksen, joka toimii tilisi tunnuksena. Tämän käyttöoikeustunnuksen avulla Microsoft Graph -sovellusliittymät tarkistavat, onko saapuva pyyntö kelvollinen ja valtuutettu.

Käyttöoikeustunnuksella on lyhyt käyttöikä. Ne vanhenevat pian. Ja kun se on vanhentunut, emme voi suorittaa API-kutsuja, koska Microsoft käsittelee pyyntöä vanhentuneella tunnuksella luvattomana pyynnönä. Ratkaistaksemme tämän ongelman käytämme ‘refresh_token’ -toimintoa käyttöoikeustunnuksen luomiseen taustalla. Näin OAuth toimii.

Tietokannan kokoonpano

Tavoitteen saavuttamiseksi meidän on säilytettävä tunnus turvallisessa paikassa. Tarvitsemme tunnuksen, kun soitamme sovellusliittymiä. Sen pitäisi myös uusiutua sen vanhenemisen jälkeen. Joten tallentaaksesi tunnuksen tiedot, luo tietokantataulukko seuraavasti.

CREATE TABLE `token` ( `id` int(11) NOT NULL AUTO_INCREMENT,
 `access_token` text NOT NULL,
 PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

Lisäämme tunnuksen tietokantaan valtuutusprosessin suorittamisen jälkeen. Lisäksi päivitämme tunnuksen taustalla. Tätä varten aion luoda tietokantaluokan, jotta voimme helposti tehdä lisäys-, valinta- ja päivitystoiminnot.

luokka-db.php

<?php
class DB {
    private $dbHost     = "DB_HOST";
    private $dbUsername = "DB_USERNAME";
    private $dbPassword = "DB_PASSWORD";
    private $dbName     = "DB_NAME";
      
    public function __construct(){
        if(!isset($this->db)){
            // Connect to the database
            $conn = new mysqli($this->dbHost, $this->dbUsername, $this->dbPassword, $this->dbName);
            if($conn->connect_error){
                die("Failed to connect with MySQL: ". $conn->connect_error);
            }else{
                $this->db = $conn;
            }
        }
    }
  
    public function is_table_empty() {
        $result = $this->db->query("SELECT id FROM token");
        if($result->num_rows) {
            return false;
        }
  
        return true;
    }
  
    public function get_access_token() {
        $sql = $this->db->query("SELECT access_token FROM token");
        $result = $sql->fetch_assoc();
        return json_decode($result['access_token']);
    }
  
    public function get_refersh_token() {
        $result = $this->get_access_token();
        return $result->refresh_token;
    }
  
    public function update_access_token($token) {
        if($this->is_table_empty()) {
            $this->db->query("INSERT INTO token(access_token) VALUES('$token')");
        } else {
            $this->db->query("UPDATE token SET access_token = '$token' WHERE id = (SELECT id FROM token)");
        }
    }
}

Luo käyttöoikeustunnus

Kun olet valmis tarvittaviin paketteihin ja tietokantaluokkaan, seuraava osa tekee todentamisen ja tallentaa tunnuksen tiedot tietokantaan.

Hybridauth-kirjasto tarjoaa oman prosessin valtuutuksen suorittamiseksi. Joten, seurataan heitä. Luo config.phptiedosto ja lisää siihen alla oleva koodi.

config.php

<?php
require_once 'vendor/autoload.php';
require_once 'class-db.php';
 
define('ONEDRIVE_CLIENT_ID', 'CLIENT_ID_HERE');
define('ONEDRIVE_CLIENT_SECRET', 'CLIENT_SECRET_HERE');
define('ONEDRIVE_SCOPE', 'files.read files.read.all files.readwrite files.readwrite.all offline_access');
define('ONEDRIVE_CALLBACK_URL', 'CALLBACK_URL_HERE'); // in my case it is http://localhost/sajid/onedrive/callback.php
 
$config = [
    'callback' => ONEDRIVE_CALLBACK_URL,
    'keys'     => [
                    'id' => ONEDRIVE_CLIENT_ID,
                    'secret' => ONEDRIVE_CLIENT_SECRET
                ],
    'scope'    => ONEDRIVE_SCOPE,
    'authorize_url_parameters' => [
            'approval_prompt' => 'force',
            'access_type' => 'offline'
    ]
];
 
$adapter = new HybridauthProviderMicrosoftGraph( $config );

Korvaa kaikki paikkamerkit niiden todellisilla arvoilla. Olen läpäissyt vaaditut tavoitteet lopputavoitteellemme, joten pidä se sellaisena kuin se on. Nyt, callback.phpjoka on takaisinsoitto-URL-osoitteeni, kirjoitan koodin, joka käynnistää todennusprosessin, ohjaa siihen onnistuneen valtuutuksen jälkeen ja tallentaa tunnustiedot tietokantataulukoon.

callback.php

<?php
require_once 'config.php';
 
try {
    $adapter->authenticate();
    $token = $adapter->getAccessToken();
    $db = new DB();
    if($db->is_table_empty()) {
        $db->update_access_token(json_encode($token));
        echo "Access token inserted successfully.";
    }
}
catch( Exception $e ){
    echo $e->getMessage() ;
}

Suorita callback.phpselain ja suorita todennusprosessi. Kun todennus on suoritettu loppuun, sinun pitäisi nähdä tunnuskohtaiset tiedot, jotka on tallennettu merkkitaulukon sisään.

Lisää taulukko OneDrive-taulukossa

Jos haluat lisätä tietoja Microsoft Graph -sovellusliittymän kautta, sinun on lisättävä taulukko OneDrive-taulukkoon. Siirry OneDrive-sivulle. Napsauta avattavan Uusi-valikon alla olevaa Excel-työkirjaa.

Kirjoita tiedot OneDrive-taulukkoon Microsoft Graph API: n ja PHP: n avulla

Kun olet arkkisivulla, napsauta ‘Taulukko’ -kuvaketta ja sitten ‘OK’ avautuvasta ponnahdusikkunasta.

Kirjoita tiedot OneDrive-taulukkoon Microsoft Graph API: n ja PHP: n avulla

Tämän jälkeen näet taulukon, joka on lisätty OneDrive-taulukkoosi seuraavasti.

Kirjoita tiedot OneDrive-taulukkoon Microsoft Graph API: n ja PHP: n avulla

Säädä sarakkeita tarpeidesi mukaan. Minun tapauksessani pidin 3 saraketta.

Nyt voidaan kysyä, miksi taulukko on lisättävä arkkiin? Kun tutkin tätä aihetta, huomasin, että tämä on ainoa tapa kirjoittaa tietoja Excel-työkirjaan. Voit lukea lisää heidän dokumentaatiostaan.

Pidä muistiinpano, kun asetamme taulukon ensimmäistä kertaa taulukkoon, sen arvo on ‘Taulukko1’. Tarvitsemme tätä arvoa sovellusliittymien kutsumisen yhteydessä. Jos jostain syystä poistat taulukon ja asetat sen uudelleen, sen arvoksi tulee ‘Taulukko2’ ja niin edelleen.

Kopioi sovellusliittymäkutsussa vaadittava taulukkotunnuksesi. Voit saada sen selaimen URL-osoitteesta alla olevan kuvakaappauksen mukaisesti.

Kirjoita tiedot OneDrive-taulukkoon Microsoft Graph API: n ja PHP: n avulla

Kirjoita tiedot OneDrive-arkkiin Microsoft Graph -sovellusliittymän ja PHP: n avulla

Toistaiseksi olemme asentaneet vaaditut paketit, lisäämällä tunnuksia tietokantaan, luomalla Excel-työkirjan, jossa on taulukko. Nyt on hyvä mennä eteenpäin ja kirjoittaa koodi, joka liittää tiedot OneDrive-taulukkoon Microsoft Graph -sovellusliittymän ja PHP: n avulla.

Luon tiedostoa, append-to-onedrive-sheet.phpja koodini on alla kirjoitettu.

<?php
require_once 'config.php';
 
// here you can pass as many data as a separate array element
$arr_data = [
    ['John Doe', '[email protected]', '8888888888']
];
 
append_to_sheet($arr_data);
 
function append_to_sheet($arr_data = array()) {
    $item_id = 'YOUR_SHEET_ID';
    $table = 'Table1'; //in your case it can be Table2, Table3, ...
 
    $db = new DB();
 
    $arr_token = (array) $db->get_access_token();
    $accessToken = $arr_token['access_token'];
 
    try {
 
        $client = new GuzzleHttpClient([
            // Base URI is used with relative requests
            'base_uri' => 'https://graph.microsoft.com',
        ]);
 
        $response = $client->request("POST", "/v1.0/me/drive/items/$item_id/workbook/tables/$table/rows/add", [
            'json' => [
                'values' => $arr_data
            ],
            'headers' => [
                'Authorization' => 'Bearer '. $accessToken
            ],
            'verify' => false,
        ]);
    } catch(Exception $e) {
        if( 401 == $e->getCode()) {
            $refresh_token = $db->get_refersh_token();
 
            $client = new GuzzleHttpClient(['base_uri' => 'https://login.microsoftonline.com']);
 
            $response = $client->request('POST', '/common/oauth2/v2.0/token', [
                'form_params' => [
                    "grant_type" => "refresh_token",
                    "refresh_token" => $refresh_token,
                    "client_id" => ONEDRIVE_CLIENT_ID,
                    "client_secret" => ONEDRIVE_CLIENT_SECRET,
                    "scope" => ONEDRIVE_SCOPE,
                    "redirect_uri" => ONEDRIVE_CALLBACK_URL,
                ],
            ]);
 
            $db->update_access_token($response->getBody());
 
            append_to_sheet($arr_data);
        } else {
            echo $e->getMessage(); //print the error just in case your video is not uploaded.
        }
    }
}

Yllä olevassa koodissa loin taulukon, jossa on 3-arvoinen matriisi-elementti. Voit välittää niin monta taulukkoelementtiä. Sinun on välitettävä taulukkotunnuksesi $item_idmuuttujalle.

Tämä koodi hakee käyttöoikeustunnuksen tietokannasta ja lähettää POST-pyynnön vaadittuun API-päätepisteeseen. Jos tunnus vanhenee, se luo sen automaattisesti taustalla ja jatkaa prosessia.

Kokeile ja sinun pitäisi nähdä, että tietosi on liitetty OneDrive-tilisi Excel-työkirjaan.

Toivon, että sait tietää kuinka kirjoittaa tietoja OneDrive-taulukkoon Microsoft Graph -sovellusliittymän ja PHP: n avulla. Jaa ajatuksesi ja ehdotuksesi alla olevassa kommenttiosassa.

Aiheeseen liittyvät artikkelit

Tämä verkkosivusto käyttää evästeitä parantaakseen käyttökokemustasi. Oletamme, että olet kunnossa, mutta voit halutessasi kieltäytyä. Hyväksyä Lisätietoja