(PHP) 有没有办法从访问令牌访问刷新令牌?

时间:2021-04-01 15:16:59

标签: php api token refresh

我正在使用 console.cloud.google。我生成了客户端 ID 和密码,并将其保存到 json 中,但似乎无法访问刷新令牌。

/**
 * @Route("/oauth2callback", name="oauth2-callback")
 * @Method("GET")
 */
public function index(Request $request)
{
    $code = $request->query->get('code');

    $client = new Google\Client();
    $client->setAuthConfig(__DIR__ . '/../AdsApi/client_secrets.json');
    $client->setRedirectUri('http://' . $_SERVER['HTTP_HOST'] . '/oauth2callback');
    $client->addScope(Google_Service_Analytics::ANALYTICS_READONLY);

    // Handle authorization flow from the server.
    if (! isset($code)) {
        $auth_url = $client->createAuthUrl();
        header('Location: ' . filter_var($auth_url, FILTER_SANITIZE_URL));
    } else {
       $client->authenticate($code);

       $_SESSION['access_token'] = $client->getAccessToken();
       $_SESSION['refresh_token'] = $client->getRefreshToken();
       $redirect_uri = 'http://' . $_SERVER['HTTP_HOST'] . '/';
       header('Location: ' . filter_var($redirect_uri, FILTER_SANITIZE_URL));
    }

    return new Response();
}

函数 getAccessToken 返回一个数组,但 getRefreshToken 返回 null。有办法解决吗?

谢谢。

1 个答案:

答案 0 :(得分:1)

好的,找到问题了。如果已经发送(第一次),Google 不会发送另一个刷新令牌。创建了一个新项目,它正在运行。