我使用hello.js允许用户登录我的网站。到目前为止,登录谷歌工作良好,但我有一个特定的用户得到一个错误。
他们有一个非gmail的电子邮件地址,但通常可以用它登录谷歌服务(想想"thisguy@companyname.net")。当他登录时,返回的对象为表示他的名字的几个变量提供空白字段("name"、"last_name"、"first_name"、"displayName"都是空白)。结果是,当他登录时,他会收到一个热烈的欢迎"Welcome [object object]"消息,而我的应用程序没有名称信息可供使用。下面是我用来实现hello.js的代码。然而,我很困惑,这是我的代码有问题,还是我通过谷歌开发者控制台设置的方式有问题,或者它只是与他的帐户的性质有关。
hello.on('auth.login', function(auth) {
// Call user information, for the given network
hello(auth.network).api('/me').then(function(r) {
// Inject it into the container
$("#div" + auth.network).css('visibility', 'visible'); //reveal div where prof is displayed
$("#div" + auth.network).css("display", "block");
var label = document.getElementById('profile_' + auth.network);
label.innerHTML = '<div style="padding:10px;"><img id="profilepic" src="' + r.thumbnail + '" /><br>Welcome ' + r.name + '</div>';
console.log("Returned object from sos: ",r);
console.log(r.name," from ",auth.network);
sos = auth.network;
sos_name = r.name ;
});
});
hello.init({
facebook: FACEBOOK_CLIENT_ID,
google: GOOGLE_CLIENT_ID,
});
下面是console.log上面输出"r"时的输出。我用REDACTED替换了一些字段,以防有任何敏感信息。
"displayName
etag"修订"
first_name "
id"修订"
image对象{url="https://lh3.googleuserco...rscbv5M/photo.jpg?sz=50",
isDefault = true}
isPlusUser假
" + #人"
语言"en"last_name "
name Object {familyName=", givenName="}
objectType"人"
图片" https://lh3.googleuserco...rscbv5M/photo.jpg?sz=50 "
缩略图"https://lh3.googleuserco...rscbv5M/photo.jpg?sz=50"
验证错误
请注意,我已经与其他有isPlusUser设置为false的谷歌帐户登录,他们仍然有完整的名称信息,所以我不认为这是一个危险信号
在某些情况下,从Google返回的名称字段可以是空字符串。我不确定这是否是一个bug,但无论哪种方式,您的最佳行动方案是处理没有给出名称的情况。