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 的文档非常糟糕!!!