3

google-oauth2 でのログイン時にユーザー プロファイル情報を取得しようとしています。ユーザーが正常にログインすると、access_token を取得でき、必要に応じてトークンを更新できます。ドキュメントを読んで何時間も試したにもかかわらず、ユーザーに関する情報を取得することはできませんでした。

開発者ガイドの「プロファイルの取得」セクションから:

https://www.google.com/m8/feeds/profiles/domain/domainName/full

十分なはずです。「gmail.com」、「google.com」、「gmail」、「google」、「orkut」、「orkut.com」、myregisteredappsdomainname (および .com) を domainName として試しました。私も試してみました

https://www.google.com/m8/feeds/profiles/domain/domainName/full?access_token=access_token_for_user

私が何とか得たのは、「それはエラーです」と書かれた401エラーだけでした。401 エラーについては、トークンを更新して新しいトークンで再試行しましたが、401 が返され続けました。

ログイン時にユーザーのプロフィール情報と画像アドレスを取得するにはどうすればよいですか?

4

4 に答える 4

2

探しているスコープは次のとおりです。

https://www.googleapis.com/oauth2/v1/userinfo

これはすでにここで回答されています

于 2012-03-21T10:24:38.847 に答える
1

スコープを正しく定義し、アクセストークンなどを取得した後でも、プロファイルを要求するときに同様のエラーが発生していました。私にとっての秘訣は、要求にAPIバージョンを含めることでした。詳細については、こちらをご覧くださいhttp://code.google.com/googleapps/domain/profiles/developers_guide.html#Versioning

于 2011-10-25T02:29:47.000 に答える
0

少し遅れているかもしれませんが、これは誰かの役に立つかもしれません。以下は、gplusユーザープロファイルを取得するために私が書いた作業コードです

マークアップの下の HTML では、Google サインイン ボタンが表示されます

<span id="signinButton">
    <span
      class="g-signin"
      data-callback="signinCallback"
      data-clientid="YOUR GPLUS CLIENT ID"
      data-cookiepolicy="single_host_origin"
      data-scope="email">
    </span>
</span>   

以下はJavaスクリプトです

 var access_token;
/**
 * Called when the Google+ client library reports authorization status.
 */
function signinCallback(authResult) {
    access_token = authResult.access_token;

    gapi.client.load('plus', 'v1', function () {
        gapi.client.plus.people.get({ userId: 'me' }).execute(printProfile);
    });
}

/**
 * Response callback for when the API client receives a response.
 *
 * @param resp The API response object with the user email and profile information.
 */
function printProfile(resp) {
    if (resp.code != 403) {
     console.log('name:' + access_token.givenname);
     console.log('last name:' + access_token.lastname);
     console.log('email:' + access_token.emails[0]);
     console.log('gender:' + access_token.gender);
     console.log('profile image url:' + access_token.image.url);
    }
}

以下のように、body タグ内で非同期に Google API JavaScript をロードしていることを確認してください。

            <script type="text/javascript">
                (function () {
                    var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;
                    po.src = 'https://apis.google.com/js/platform.js';
                    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);
                })();
</script>

ログアウトを処理するには、以下のリンクで提供する回答を参照してください。ログアウト呼び出し中にこれが使用されるように、バックエンドにaccess_tokenを保存する必要があります。 ); 働いていない

于 2014-08-06T07:16:49.460 に答える
-1

http://www.codeproject.com/KB/aspnet/OAuth4Client.aspxにあるコードを見てみましょう 。

それは間違いなくあなたを助けます。プロジェクトは実際には、正しい oauth ヘッダーを正しいエンドポイントに送信するための oauth プレイグラウンドです。

于 2012-01-16T10:29:02.977 に答える