stackoverflow‘’ers!因此,我现在的工作就是围绕社交网络开展工作。我已经登录了facebook,google和twitter。现在我需要检索用户头像。网站是非常动态的,几乎所有的东西都是通过javascript和ajax来工作的。我已经成功获得facebook用户头像。当用户有头像时,返回头像,当用户没有头像时,返回facebook的默认头像。现在我在google+和twitter上工作。我找到了一个很好的网址,在那里我可以从google-plus获取头像:
https://plus.google.com/s2/photos/profile/{oauth_id}?sz=100我将oauth_id存储在会话中,它是可访问的。当用户设置了头像时,一切都很正常。问题是,当用户的头像没有设置时,链接会返回404错误。如何在jquery或仅在javascript中确定该链接是否返回404错误?对于未来的一些工作,我认为twitter也有同样的问题。或者你可以提供一些更好的选项来实现这一点。
发布于 2012-12-07 00:58:12
另一种方法是请求plus.me作用域,对用户进行身份验证,然后检索他们的配置文件,如果他们有化身,则会设置图像值。我在这里创建了一个实时演示:http://wheresgus.com/profile.html,它显示了使用Google+公共数据API检索配置文件。
要为您的项目设置内容,请转到Google APIs控制台- https://code.google.com/apis/console/并创建一个启用了Google+ API的项目。您将需要Google API控制台的API Access部分中的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-06 19:36:57
如果您使用的是jquery.ajax()或jquery.get()方法(或类似方法),则应该能够检查作为回调的一部分返回的jqXHR对象。它有一个" status“字段,其中包含HTTP调用的状态代码。
请参阅http://api.jquery.com/jQuery.ajax/下的 jqXHR Object一节
发布于 2016-01-04 02:24:41
我试着处理上面的建议,但发现下面的方法是合适的。我使用jquery get来获取图像url。以下是代码片段。
function getImageURL(_gplusid) {
$.get("https://www.googleapis.com/plus/v1/people/"+_gplusid+"?fields=image"+"&key="+googlepluskey,
function (data) {
console.log(data);
});
}附注:_gplusid是用户的google plus id,googlepluskey是你的google认证密钥。输出是一个包含图像url的json对象。您需要通过google api控制台启用google plus api访问。
https://stackoverflow.com/questions/13742113
复制相似问题