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也有同样的问题。 或者你可以提供一些更好的选择来实现这一目标。
答案 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调用状态代码的字段。
下的 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访问权限。