Google API - 从 Oauth2 请求令牌 returns 空令牌
Google API - request for token from Oauth2 returns null token
对于凭据,我在 https://console.developers.google.com 上创建了一个开发者帐户,我创建了一个项目,然后我从 API 管理器创建了凭据。我使用 "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);
我认为问题在于您没有向 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();
提示:
不要使用:
$client->authenticate($authcode);
$token = $client->getAccessToken();
使用:
$token = $client->fetchAccessTokenWithAuthCode($authcode);
如果转储 $token
,这至少能让您看到错误消息。
在“不要使用:”示例中,如果 authenticate()
步骤失败,getAccessToken()
可能 return 为空。 API 这里的工作做得不好。
对于凭据,我在 https://console.developers.google.com 上创建了一个开发者帐户,我创建了一个项目,然后我从 API 管理器创建了凭据。我使用 "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);
我认为问题在于您没有向 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();
提示:
不要使用:
$client->authenticate($authcode);
$token = $client->getAccessToken();
使用:
$token = $client->fetchAccessTokenWithAuthCode($authcode);
如果转储 $token
,这至少能让您看到错误消息。
在“不要使用:”示例中,如果 authenticate()
步骤失败,getAccessToken()
可能 return 为空。 API 这里的工作做得不好。