1

Googleplus Api にアクセスするために完全に機能していたコードがありますが、次の行が呼び出されたときに "(401) 無効な資格情報" エラーを返す代わりに、不可解に機能しなくなりました。

$me = $plus->people->get('me');

完全なコード スニペット (php) は次のとおりです。

try
{
    $client = new apiClient();

    $client->setApplicationName("Google OAuth");
    $client->setClientId(GOOGLE_API_CLIENT_ID);
    $client->setClientSecret(GOOGLE_API_CLIENT_SECRET);
    $client->setRedirectUri(GOOGLE_API_REDIRECT_URI);
    $client->setDeveloperKey('XXX');
    $client->setScopes(array('https://www.googleapis.com/auth/plus.me'));

    $plus = new apiPlusService($client);

    $oauth2 = new apiOauth2Service($client);

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

    if (isset($token))
        $client->setAccessToken($token);

    if ($client->getAccessToken()) {
         $me = $plus->people->get('me');
    }
}
catch (Exception $x)
{
    echo "Stack: " . $x->getTraceAsString() . "<br />";
    echo "Message: " . $x->getMessage() . "<br />";
    echo "File: " . $x->getFile() . "<br />";
    echo "Line: " . $x->getLine(). "<br />";

}
4

4 に答える 4

1

ユーザーがアプリケーションへのアクセスを拒否したときに同じエラーが発生し、トークンが DB (またはセッション) に残りました。API は古いトークンを使用して認証しようとしていました。チェックする必要があります

if(strpos($x->getMessage(), 'Invalid Credentials')) {
   unset($_SESSION['access_token'];
}

また、データベースから関連データを削除します。

于 2015-05-06T07:27:12.080 に答える
0

何が失敗しますか?承認するための最初の呼び出し、またはトークンを取得するための2番目の呼び出し?

送信された URL を確認すると、問題の調査が容易になります。および: Google は oAuth API を変更した可能性がありますか?

于 2012-10-30T12:40:12.020 に答える
0

私が知る限り、すべてチェックアウトしていますが、アカウントに関連付けられた資格情報に問題があった可能性があります。

これを確認するには、別のアカウントを使用して API にアクセスするか、Google アカウントからアプリケーションを取り消してみてください。アカウントからアプリケーションを取り消すには:

  1. このページに移動します: https://www.google.com/settings/account
  2. [セキュリティ] リンクをクリックし、ページの下部にある[アクセスの管理] ボタンをクリックします。
  3. サイトに対応するアプリケーションを見つけてクリックします

サイト/アプリケーションが取り消された後、サイトに戻って再認証してください。

于 2012-11-09T02:56:10.897 に答える