0

サイトに統合された Google プラス ログイン ボタンからユーザーの公開情報を取得するにはどうすればよいですか。メールを送信するコードは次のとおりです。Google プラスが提供する詳細情報が必要です。

  <div id="signin-button" class="show">
     <div class="g-signin" data-callback="loginFinishedCallback"
                        data-approvalprompt="force"
                        data-clientid="9076269517.apps.googleusercontent.com"
                        data-scope="https://www.googleapis.com/auth/plus.login https://www.googleapis.com/auth/userinfo.email"
                        data-height="short"
                        data-cookiepolicy="single_host_origin">
</div>

ジャバスクリプト:

  function loginFinishedCallback(authResult) {
    if (authResult) {
      if (authResult['error'] == undefined){
        gapi.auth.setToken(authResult); // Store the returned token.
        toggleElement('signin-button'); // Hide the sign-in button after successfully signing in the user.
        getEmail();                     // Trigger request to get the email address.
      } else {
        console.log('An error occurred');
      }
    } else {
      console.log('Empty authResult');  // Something went wrong
    }
  }

function getEmail(){
    // Load the oauth2 libraries to enable the userinfo methods.
    gapi.client.load('oauth2', 'v2', function() {
          var request = gapi.client.oauth2.userinfo.get();
          request.execute(getEmailCallback);
        });
  }

  function getEmailCallback(obj){
    var el = document.getElementById('email');
    var email = '';

if (obj['email']) {
  email = 'Email: ' + obj['email'];
}

//console.log(obj);   // Uncomment to inspect the full object.

el.innerHTML = email;
toggleElement('email');
  }



 function toggleElement(id) {
    var el = document.getElementById(id);
    if (el.getAttribute('class') == 'hide') {
      el.setAttribute('class', 'show');
    } else {
      el.setAttribute('class', 'hide');
    }
  }

email を name、userId に置き換えようとしましたが、これらの変数からは何も得られませんでした。

ユーザーがGoogleプラスにログインしているときに、ユーザーの基本情報を取得するにはどうすればよいですか?

4

2 に答える 2

2

を使用して oauth2 v2 クライアント パッケージをロードした方法と同様に、gapi.client.loadこれを再度使用して plus v1 クライアント パッケージをロードします。gapi.client.plusこれにより、名前空間の下に多数のパッケージとメソッドが提供されます。

Plus API には、People に関する情報をロードするためのパッケージが含まれています。これには、ユーザー ID による取得が含まれます。または、People はあなたで認証されているため、特別な識別子「me」を使用できます。

完全な詳細と例はhttps://developers.google.com/+/api/latest/people/getにありますが、完全な名前を取得する getEmail() メソッドと同様の (テストされていない) 関数を次に示します。


function getFullName(){
  // Load the Plus library to get the People package and methods
  gapi.client.load('plus', 'v1', function() {
    var request = gapi.client.plus.people.get('me');
    request.execute(getFullNameCallback);
  });
};

function getFullNameCallback(obj){
  var el = document.getElementById('email');
  var name = '';

  if (obj['displayName']) {
    name = 'Name: '+obj.displayName;
  }

  el.innerHTML = name;
  toggleElement('name');
};
于 2013-07-11T12:59:20.877 に答える
0

上記のコード スニペットは機能していないようです。もう一度、Google が変更した何かについて追跡中です……エラー「アクセスが構成されていません。プロジェクトの API を有効にするには、Google Developers Console を使用してください。」

「Google+ API」である可能性があると想定したため、開発者コンソールでオンになっていますが、まだ機能していません。

それでもAPIエクスプローラーは、ある種のコードが機能することを有望に示していますが、そこで機能しているJavaScriptコードを識別しようとするのは犬の朝食です。非常に便利な api エクスプローラー....しかし、Google がこの同じ要求を確認できるコードで簡単な動作例を表示するのはどうですか?

于 2014-02-19T06:23:01.910 に答える