javascript获取google-plus用户头像

时间:2012-12-06 10:56:28

标签: javascript google-plus

stackoverflow'ers! 所以我现在的工作是解决社交网络问题。我已登录facebook,google和twitter。现在我需要检索用户头像。网站是非常动态的,几乎所有东西都通过javascript和ajax工作。我已成功获得facebook用户头像。当用户具有头像时,它返回头像,当用户没有头像时,它返回Facebook的默认头像。现在我正在开发google-plus和twitter。我找到了很好的网址,我可以从google-plus获得头像:

    https://plus.google.com/s2/photos/profile/{oauth_id}?sz=100

我在会话中存储oauth_id,它是可访问的。 当用户设置了头像时 - 一切正常。问题是,当用户头像未设置时 - 该链接返回404错误。 我如何在jquery或javascript中确定,如果该链接返回404错误? 对于未来的一些工作 - 我认为Twitter也有同样的问题。 或者你可以提供一些更好的选择来实现这一目标。

3 个答案:

答案 0 :(得分:4)

另一种方法是请求plus.me范围,对用户进行身份验证,然后检索其配置文件,如果他们有头像,则会设置图像值。我在此处创建了一个实时演示:http://wheresgus.com/profile.html,其中显示了使用Google+公开数据API进行个人资料检索。

要为您的项目进行设置,请转到Google API控制台 - https://code.google.com/apis/console/并创建启用了Google+ API的项目。您需要从Google API控制台的API访问部分获取Web应用程序的客户端ID。

相关代码如下:

<html>
  <head>
    <script src="https://apis.google.com/js/plusone.js"></script>
    <script type="text/javascript">
    function onSignin(e){
      accessToken = e.access_token;
      var xhr = new XMLHttpRequest();
      xhr.open('GET', "https://www.googleapis.com/plus/v1/people/me/");
      xhr.setRequestHeader('Authorization', 'Bearer ' + accessToken);
      xhr.send();

      xhr.onreadystatechange = function(){
        if (this.readyState == 4){
          var myProfile = JSON.parse(xhr.responseText);
          alert(myProfile.image.url);
        }
      }
    }
    </script>      
  </head>
  <body>
    <g:plus action="connect" clientid="YOUR CLIENT ID" scope="https://www.googleapis.com/auth/plus.me" callback="onSignin">
    </g:plus>
  </body>
</html>

使用此代码创建HTML文件,并将您的客户ID替换为您在Google API控制台中创建的凭据。当您单击登录按钮时,客户端将为您提供该用户的URL。

答案 1 :(得分:0)

如果您正在使用jquery.ajax()或jquery.get()方法(或类似的东西),您应该能够检查作为回调的一部分返回的jqXHR对象。它具有&#34;状态&#34;包含HTTP调用状态代码的字段。

请参阅http://api.jquery.com/jQuery.ajax/

下的 jqXHR对象部分

答案 2 :(得分:0)

我试图摆弄上述建议,但发现以下方法合适。我用jquery来获取图片网址。以下是代码段。

function getImageURL(_gplusid) {
                $.get("https://www.googleapis.com/plus/v1/people/"+_gplusid+"?fields=image"+"&key="+googlepluskey,
                function (data) {
                    console.log(data);
                });
        }

P.S:_gplusid是用户的google plus ID,googlepluskey是您的Google身份验证密钥。输出是包含图像url的json对象。您需要通过google api console启用google plus api访问权限。