Google API - 来自Oauth2的令牌请求返回空令牌

时间:2016-03-11 10:08:01

标签: php laravel oauth-2.0 google-api google-api-php-client

对于凭据,我在https://console.developers.google.com创建了一个开发人员帐户,我创建了一个项目,然后我从API Manager创建了凭据。我使用" google / apiclient":" 1.1。*"包。我认为这是凭证的问题。

    $OAUTH2_CLIENT_ID = 'XXXXX-rvm1l9b1nvht9je1ic0bbe05ab5gvhbg.apps.googleusercontent.com';
    $OAUTH2_CLIENT_SECRET = 'XXXXXXP90L_DLD3Nrc_rT4zGD';

    $client = new Google_Client();
    $client->setClientId($OAUTH2_CLIENT_ID);
    $client->setClientSecret($OAUTH2_CLIENT_SECRET);
    $client->setScopes('https://www.googleapis.com/auth/youtube');
    $redirect = url('/');
    $client->setRedirectUri($redirect);


    $token = $client->getAccessToken();
    dd($token);

2 个答案:

答案 0 :(得分:6)

提示:

不要使用:

$client->authenticate($authcode);
$token = $client->getAccessToken();

使用:

 $token = $client->fetchAccessTokenWithAuthCode($authcode);

如果您转储$token,这至少可以让您看到错误消息。 在“不要使用:'例如,如果authenticate()步骤失败,getAccessToken()可能会返回null。这里的API工作不好。

答案 1 :(得分:0)

我认为问题是您没有向Google发出身份验证请求并取回令牌。你应该这样做:

$client = new Google_Client();
$client->setClientId($OAUTH2_CLIENT_ID);
$client->setClientSecret($OAUTH2_CLIENT_SECRET);
$client->setScopes('https://www.googleapis.com/auth/youtube');
$redirect = url('/');
$client->setRedirectUri($redirect);

//redirect to google server to get the token 
return Redirect::to( $client->createAuthUrl() );

如果身份验证成功,Google会将您重定向到您使用$client->setRedirectUri($redirect)设置的页面。

在该页面中,您可以:

//authenticate using the parameter $_GET['code'] you got from google server
$client->authenticate( $request->input('code') );

//get the access token
$tokens = $client->getAccessToken();