Oauth/Hello.js 返回空"name"字段



我使用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,但无论哪种方式,您的最佳行动方案是处理没有给出名称的情况。

最新更新