经过大量的研究和实验,我能够在我的网站上显示所有谷歌评论,在这里发布这个问题的原因是,我第一次玩 API,我的想法很少。我不确定我的方法是正确的还是可以进一步改进?代码在安全方面是否也是安全的。
采取了以下步骤,您可能知道,我们必须做一些先决条件,我做了。
获得批准后,我通过 Google Oauth Playground 测试了 API,并成功获得
accoundId
了locationId
. (https://mybusiness.googleapis.com/v4/accounts/{accountId}/locations/{locationId}/reviews)为了在网站上实施评论,我使用了 Google PHP 客户端库 ( https://github.com/googleapis/google-api-php-client )。
现在让我们进入主要部分,要获取我们需要在 URL 末尾添加“访问令牌”的所有结果。(https://mybusiness.googleapis.com/v4/accounts/102xxxxxxx/locations/733xxxxxxx/reviews?access_token=xxxxxxxxxx)
现在,问题是访问令牌在一小时后过期,为了克服这个问题,我生成了一个刷新令牌并使用以下代码。虽然我不确定,刷新令牌是否会过期?
<?php
// include your composer dependencies
require_once 'GoogleClientApi/vendor/autoload.php'; // or wherever autoload.php is located
$refreshToken = 'xxxxxxxxxxxx'; // generrated from https://developers.google.com/oauthplayground/
$name = "accounts/xxxxxxx/locations/xxxxxxxx"; // generrated from https://developers.google.com/oauthplayground/
//PHP Client Library
$client = new Google_Client();
$client->setClientId("xxxxxx"); // generated from Google Cloud Platform
$client->setClientSecret("xxxxx"); // generated from Google Cloud Platform
$client->refreshToken($refreshToken); // as set above in variable.
//Authorization Scopes
//$client->addScope("https://www.googleapis.com/auth/business.manage"); // Not needed probably.
$access_token = $client->getAccessToken(); // confused here...
$client->setAccessToken($access_token); // confused here..
$token = $access_token['access_token'];
$jsonDoc = file_get_contents("https://mybusiness.googleapis.com/v4/accounts/xxxxx/locations/xxxx/reviews?access_token=$token");
$array = json_decode($jsonDoc, true); // when true works as assoc array ?>
print_r($array) // output the JSON formatted reviews.
现在,我脑海中提出的问题:
- 我通过 Googe OAuth 游乐场生成的刷新令牌会过期吗?如果是,我是否必须通过 Playground 再次重新生成令牌并每次在文件中手动添加代码?
- 这两行我很困惑。以下代码在每次页面刷新时生成一个新的访问令牌这是正常流程吗?还是违反任何 Google 政策,或者我只是想多了?
$access_token = $client->getAccessToken(); // confused here...
$client->setAccessToken($access_token); // confused here..
- 我是否需要将刷新令牌或访问令牌存储在任何文件或数据库中?