Google PHP SDK - 未获取刷新令牌
Google PHP SDK - not getting refresh token
我正在尝试使用 PHP SDK 获取 Google API 的刷新令牌。我正在使用 Javascript 对用户进行身份验证,检索代码并将其交换为 access_token 服务器端,但这并没有授予我访问令牌。我究竟做错了什么?这是我使用的代码:
$client = new Google_Client();
$client->setClientId($client_id);
$client->setClientSecret($client_secret);
$client->addScope('https://www.googleapis.com/auth/plus.me');
$client->addScope('https://www.google.com/m8/feeds');
$client->setRedirectUri('postmessage');
$client->setAccessType('offline');
if (isset($_REQUEST['code'])) {
$client->authenticate($_REQUEST['code']);
if ($client->getAccessToken()) {
$_SESSION['access_token'] = $client->getAccessToken();
$token_data = $client->verifyIdToken()->getAttributes();
$result['data']=$token_data;
$result['access_token']=json_decode($_SESSION['access_token']);
}
}
debug($result); //my own function, var_dumps the content of an array
数组结果如下:
$result['access_token'] 包含:
access_token: TOKEN
created: 1434380576
expires_in: 3594
id_token: IDTOKEN
token_type:"Bearer"
如果我没记错的话第一个访问令牌也应该包含刷新令牌,我做错了什么?
首先检查 Google 的开发者控制台中的设置,看看您的 RedirectUri 是否相同以及 API 是否已激活(尽管如果您已经获得了 .json , 那么我认为是。
您必须至少通过 Google 身份验证提示屏幕 1 次才能在您的 .json 中获取刷新令牌,如果您的 RedirectUri 让您无处可去,您将不会能够获得您的刷新令牌甚至验证访问权限。
如果您正在进行小文件交易并且不需要用户验证您的脚本进程,您也可以尝试使用服务帐户。祝你好运。
问题是我必须在客户端的身份验证过程中指定我想要离线访问... Google API 的文档非常糟糕!!!
我正在尝试使用 PHP SDK 获取 Google API 的刷新令牌。我正在使用 Javascript 对用户进行身份验证,检索代码并将其交换为 access_token 服务器端,但这并没有授予我访问令牌。我究竟做错了什么?这是我使用的代码:
$client = new Google_Client();
$client->setClientId($client_id);
$client->setClientSecret($client_secret);
$client->addScope('https://www.googleapis.com/auth/plus.me');
$client->addScope('https://www.google.com/m8/feeds');
$client->setRedirectUri('postmessage');
$client->setAccessType('offline');
if (isset($_REQUEST['code'])) {
$client->authenticate($_REQUEST['code']);
if ($client->getAccessToken()) {
$_SESSION['access_token'] = $client->getAccessToken();
$token_data = $client->verifyIdToken()->getAttributes();
$result['data']=$token_data;
$result['access_token']=json_decode($_SESSION['access_token']);
}
}
debug($result); //my own function, var_dumps the content of an array
数组结果如下:
$result['access_token'] 包含:
access_token: TOKEN
created: 1434380576
expires_in: 3594
id_token: IDTOKEN
token_type:"Bearer"
如果我没记错的话第一个访问令牌也应该包含刷新令牌,我做错了什么?
首先检查 Google 的开发者控制台中的设置,看看您的 RedirectUri 是否相同以及 API 是否已激活(尽管如果您已经获得了 .json , 那么我认为是。
您必须至少通过 Google 身份验证提示屏幕 1 次才能在您的 .json 中获取刷新令牌,如果您的 RedirectUri 让您无处可去,您将不会能够获得您的刷新令牌甚至验证访问权限。
如果您正在进行小文件交易并且不需要用户验证您的脚本进程,您也可以尝试使用服务帐户。祝你好运。
问题是我必须在客户端的身份验证过程中指定我想要离线访问... Google API 的文档非常糟糕!!!