【发布时间】:2018-09-07 01:47:15
【问题描述】:
我已经完成了谷歌请求帐户权限并要求用户验证的授权步骤,它返回访问令牌,刷新令牌类型承载。
然后我将令牌保存在数据库中。 在另一个 php 文件中,我使用以下代码:
require __DIR__ . '/foo/Google/autoload.php';
$client = new Google_Client();
$client->setClientId("foo.apps.googleusercontent.com");
$client->setClientSecret("foo");
$client->setAccessToken($access_token);
$expired = $client->isAccessTokenExpired();
if($expired == 1)
{
$new_token = $client->fetchAccessTokenWithRefreshToken($refresh_token);
print_r($new_token);
$access_token = $new_token['access_token'];
send("UPDATE `foo_table` SET `access_token`='$access_token' WHERE `foo` = '$foo'");
$client->setAccessToken($access_token);
$expired = $client->isAccessTokenExpired();
echo $expired;
}
if($expired == 0)
{
code..
我总是得到一个新的令牌,和相同的初始刷新令牌,但它总是过期,在同一页面和刷新时(使用存储的令牌)。 php在google api的授权Uris中
Array
(
[access_token] = foobar
[token_type] = Bearer
[expires_in] = 3600
[created] = 1522234588
[refresh_token] = Foobar
)
1 (Expired)
我将它用于 gmail api,初始范围:
$client->addScope("https://mail.google.com/");
$client->addScope("https://www.googleapis.com/auth/gmail.compose");
$client->addScope("https://www.googleapis.com/auth/gmail.send");
$client->addScope("https://www.googleapis.com/auth/gmail.readonly");
【问题讨论】:
标签: php google-oauth gmail-api