获取用户信息google plus api

时间:2013-07-11 11:21:03

标签: login google-plus

如何从网站上集成的google plus登录按钮获取用户的公开信息,以下是给我电子邮件的代码,我需要更多信息由google plus提供:

  <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>

java脚本:

  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');
    }
  }

我尝试使用name,userId替换电子邮件,但从这些变量中得不到任何内容。

如何通过google plus登录时获取用户的基本信息。

2 个答案:

答案 0 :(得分:2)

与使用gapi.client.load加载oauth2 v2客户端软件包的方式类似,您将再次使用它来加载plus v1客户端软件包。这将为您提供gapi.client.plus命名空间下的许多包和方法。

Plus API包含一个用于加载有关人员信息的软件包,包括通过用户ID获取信息,或者由于他们已经通过身份验证,您可以使用特殊标识符“我”。

完整的详细信息和示例在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');
};

答案 1 :(得分:0)

以上代码段似乎不再起作用。 我们再一次追逐我们的尾巴 谷歌现在改变了...... 错误&#34;访问未配置。请使用Google Developers Console激活项目的API。&#34;

我认为它可能是&#34; Google+ API&#34;所以它在开发者控制台中打开, 但是仍然没有工作。

然而api explorer很有希望表明某种代码可以工作, 然而它的狗早餐试图辨别javascript代码在那里工作。 这么有用api explorer ....,但谷歌如何在代码中显示一个简单的WORKING示例,我们可以查看同样的请求?