3

堆栈溢出!所以我现在的工作是围绕社交网络工作。我已经登录了 facebook、google 和 twitter。现在我需要检索用户头像。网站非常动态,几乎所有内容都通过 javascript 和 ajax 运行。我已经成功获得了 facebook 用户头像。当用户有头像时,返回头像,当用户没有头像时,返回facebook的默认头像。现在我正在研究 google-plus 和 twitter。我找到了不错的 url,我可以从 google-plus 获取头像:

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

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

4

3 回答 3

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。

于 2012-12-06T16:58:11.713 回答
0

如果您使用 jquery.ajax() 或 jquery.get() 方法(或类似的方法),您应该能够检查作为回调的一部分返回的 jqXHR 对象。它有一个“状态”字段,其中包含 HTTP 调用的状态代码。

请参阅http://api.jquery.com/jQuery.ajax/的 jqXHR 对象部分

于 2012-12-06T11:36:56.787 回答
0

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

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

PS:_gplusid 是用户的 google plus id,googlepluskey 是你的 google 认证密钥。输出是一个包含图像 url 的 json 对象。您需要通过 google api 控制台启用 google plus api 访问。

于 2016-01-03T18:24:41.267 回答