使用 Google API,我希望检索我从 Youtube 帐户订阅的频道列表。为此,我使用了以下 PHP 库:https://packagist.org/packages/league/oauth2-client。应用所有必要的信息后,我收到以下错误:致命错误:未捕获的 UnexpectedValueException:从授权服务器收到的响应无效。预期的 JSON ....这是我的代码:<?phprequire 'vendor/autoload.php';$provider = new \League\OAuth2\Client\Provider\GenericProvider([ 'clientId' => 'my_oauth_client_id', // The client ID assigned to you by the provider 'clientSecret' => 'my_oauth_client_secret', // The client password assigned to you by the provider 'redirectUri' => 'http://localhost/oauthytb/index.php', 'urlAuthorize' => 'https://accounts.google.com/o/oauth2/v2/auth', 'urlAccessToken' => 'https://oauth2.googleapis.com/token', 'urlResourceOwnerDetails' => 'https://www.googleapis.com/auth/youtube.readonly']);// If we don't have an authorization code then get oneif (!isset($_GET['code'])) { $options = [ 'scope' => ['https://www.googleapis.com/auth/youtube.readonly'] ]; // Fetch the authorization URL from the provider; this returns the // urlAuthorize option and generates and applies any necessary parameters // (e.g. state). $authorizationUrl = $provider->getAuthorizationUrl($options); // Get the state generated for you and store it to the session. $_SESSION['oauth2state'] = $provider->getState(); // Redirect the user to the authorization URL. header('Location: ' . $authorizationUrl); exit;// Check given state against previously stored one to mitigate CSRF attack} elseif (empty($_GET['state']) || (isset($_SESSION['oauth2state']) && $_GET['state'] !== $_SESSION['oauth2state'])) { if (isset($_SESSION['oauth2state'])) { unset($_SESSION['oauth2state']); } exit('Invalid state');}
1 回答
慕运维8079593
TA贡献1876条经验 获得超5个赞
我终于解决了这个问题。
我更换了:
'urlResourceOwnerDetails' => 'https://www.googleapis.com/auth/youtube.readonly'
经过 :
'urlResourceOwnerDetails' => 'https://www.googleapis.com/youtube/v3/subscriptions?part=snippet%2CcontentDetails&mine=true&key=AIzaSyDay5KNU_TPCD-s_n7t6XqqrHYumUtjytI'
- 1 回答
- 0 关注
- 73 浏览
添加回答
举报
0/150
提交
取消