Google MyBusiness API 實戰教學(三)-在PHP使用API
這一篇將會是本系列篇的最後一篇,本篇將帶來我們實際在PHP中如何使用這支API!
相關文章:
Google MyBusiness API 實戰教學(一)-簡單4步驟完成啟用
Google MyBusiness API 實戰教學(二)–Postman的測試
這邊有幾個檔案需要從Google(連結)先下載
Google My Business API客戶端庫包含了Google My Business API的功能,並提供了所有Google API的通用功能,例如HTTP傳輸、錯誤處理、身份驗證、JSON解析以及支援協議緩衝區。
這邊下載4.3的php版本,再來如果有用composer來安裝google client套件是比較方便管理的一種方式,也可以直接下載下來
如果是使用composer的話,在composer.json這支檔案直接加上
{ "require": { "google/apiclient": "^2.0" } }
再來執行composer install就會安裝完成
另外附上這個套件的github也可以自行clone下來使用(連結)
接下來本篇將用composer的方式進行介紹
如果沒用任何框架的話必須自行require vendor/autoload.php以及剛剛下載的MyBusiness.php
$credentials_f = "client_secrets.json"; $client = new Google_Client(); $client->setApplicationName('Reviews'); $client->setAuthConfig($credentials_f); $client->setRedirectUri('https://' . $_SERVER['HTTP_HOST'] . '/oauth2callback.php'); $client->setScopes(["https://www.googleapis.com/auth/plus.business.manage"]); $client->setAccessType('offline'); $client->setApprovalPrompt('force'); $mybusinessService = new Google_Service_Mybusiness($client); $reviews = $mybusinessService->accounts_locations_reviews; $locationName = "pass your loaction here"; $reviewsList = $reviews->listAccountsLocationsReviews($locationName, array('pageSize' => 5)); $google_review = $reviewsList->reviews;
這邊解釋一下
$credentials_f 這是由第一篇最後一部所下載下來的檔案,這算認證的一部分
$client 把google client的class實現出來使用
後面就是set一些基本的設定值像是redirectUrl、Scope之類的
最後把client的東西在塞進去Google_Service_Mybusiness裡面就會return正確的資訊回來了,
如果沒有就看一下缺少了哪些內容
$locationName可以從第二篇使用postman的地方得知各個location的url該怎麼輸入,例如accounts/00000000000000000001/locations/000000000000000002
在$reviewList裡面有許多東西可以查看,我們可以多使用var_dump出來看看
<?php require_once 'vendor/autoload.php'; require_once 'MyBusiness.php'; session_start(); $client = new Google_Client(); $client->setAuthConfigFile('client_secrets.json'); $client->setRedirectUri('https://' . $_SERVER['HTTP_HOST'] . '/oauth2callback.php'); $client->addScope(["https://www.googleapis.com/auth/plus.business.manage"]); $client->setAccessType("offline"); $client->setPrompt('consent'); if (! isset($_GET['code'])) { $auth_url = $client->createAuthUrl(); header('Location: ' . filter_var($auth_url, FILTER_SANITIZE_URL)); } else { $client->authenticate($_GET['code']); $_SESSION['access_token'] = $client->getAccessToken(); $_SESSION['refresh_token'] = $client->getRefreshToken(); $f = fopen('googleRefreshToken.txt','w+'); fwrite($f, $client->getRefreshToken()); fclose($f); }
但上述的方式不但每次使用都要登入google帳號並且授權一次,不過我們可以使用refreshToken來跳過這個動作
上面這段是callback的code,第一次可以設定setAccessType來取得refreshToken
$client->setAccessType('offline');
這邊設定為offline,我這邊是將refreshToken用文字檔存起來或是可以存在session還是db之類,之後在google client那邊加入一段
$client->refreshToken(file_get_contents('https://' . $_SERVER['HTTP_HOST'] . '/googleRefreshToken.txt'));
去讀取我們的refreshToken就可以不必每次都要登入然後授權這麼麻煩了!
這篇簡單介紹到這邊,相信看到這裡的讀者一定可以照著上面的步驟成功的查詢出該location的reviews,更多的功能都可以在Google的文件中看到,如果有任何問題,歡迎在底下留言給我們!
延伸閱讀:
Google API 定價的改變,對開發者而言代表了什麼呢?
更多電商營運與架站相關的知識,歡迎訂閱歐斯瑞電子報,以及追蹤我們的Facebook粉絲專頁!
我要留言