我使用hello.js允许用户在我的网站上签名。到目前为止,登录谷歌已经工作正常,但我有一个特定的用户收到错误 他们有一个非gmail的电子邮件地址,但通常可以使用它登录谷歌服务(想想" thisguy@companyname.net")。当他登录时,返回的对象有几个变量的空白字段,表示他的名字("名称"," last_name"," first_name"," displayName& #34;都是空白的)。结果是他得到了热烈的欢迎"欢迎[对象]"登录时的消息,我的应用程序没有名称信息可供使用。下面是我用来实现hello.js的代码。但是,我对我的代码是否有问题,或者我通过谷歌开发者控制台进行设置的方式,或者是否与他的帐户的性质有关,我感到很困惑。 / p>
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输出&#34; r&#34;以上。如果有任何敏感信息,我用REDACTED替换了一些字段。
displayName&#34;&#34;
etag&#34;&#34;删除&#34;&#34;
first_name&#34;&#34;
id&#34;删除&#34;
image对象{url =&#34; https://lh3.googleuserco...rscbv5M/photo.jpg?sz = 50&#34;,
ISDEFAULT =真}
isPlusUser false
善良&#34;加上#person&#34;
语言&#34; en&#34;
last_name&#34;&#34;
name Object {familyName =&#34;&#34;,givenName =&#34;&#34;}
objectType&#34; person&#34;
图片&#34; https://lh3.googleuserco...rscbv5M/photo.jpg?sz=50&#34;
thumbnail&#34; https://lh3.googleuserco...rscbv5M/photo.jpg?sz=50&#34;
验证错误
请注意,我已将其与isPlusUser设置为false的其他Google帐户登录,但他们仍然拥有完整的名称信息,因此我不认为这是一个红旗。
答案 0 :(得分:-1)
在某些情况下,从Google返回的名称字段可以是空字符串。我不确定这是否是一个错误,但无论哪种方式,你最好的做法是处理没有给出名字的情况。