javascript - Google 登录 API 不适用于 Mozilla Firefox

标签 javascript firefox google-signin

我目前正在处理一个网络应用程序,该应用程序要求用户使用他们的谷歌帐户登录才能访问核心功能。当使用 Google Chrome 时,一切都按照预期的方式工作:用户点击“登录”,弹出一个带有 Google 登录表单的窗口,用户登录,他将被转移到主页。 (好)

然而

使用 Mozilla Firefox 38.0.1 时,无法以任何方式使用网络应用程序,因为当用户单击“登录”时,它什么都不做。几乎什么都没有,甚至在控制台上也没有错误。

这是登录按钮:

//head
<meta name="google-signin-client_id" content="{CLIENT ID}.apps.googleusercontent.com">

//body
<button class="g-signin2 login-button" data-onsuccess="onSignIn"></button>

Firefox 和 Google Sign In API 当前是否存在已知问题?

最佳答案

好的,找到了解决方案:我关注了this .基本上,我没有使用 Google SignIn 的简单集成,我只是创建了一个自定义处理程序和监听器。我保留了原始按钮,因为它是必需的,只是添加了这个 javascript:

HTML

<script src="https://apis.google.com/js/plus.js?onload=appStart"></script>

JS

//googleSignIn.js

var auth2; // The Sign-In object.
var googleUser; // The current user.
/**
 * Calls startAuth after Sign in V2 finishes setting up.
 */
var appStart = function() {
  console.log('appStart()')
  gapi.load('auth2', initSigninV2);
};
/**
 * Initializes Signin v2 and sets up listeners.
 */
var initSigninV2 = function() {
  auth2 = gapi.auth2.getAuthInstance({
      client_id: '{CLIENT ID}.apps.googleusercontent.com',
      scope: 'profile'
  });

  // Listen for sign-in state changes.
  auth2.isSignedIn.listen(signinChanged);
  // Listen for changes to current user.
  auth2.currentUser.listen(userChanged);

  // Sign in the user if they are currently signed in.
  if (auth2.isSignedIn.get() == true) {
      auth2.signIn();
  }
};
/**
 * Listener method for sign-out live value.
 *
 * @param {boolean} val the updated signed out state.
 */
var signinChanged = function (val) {
    console.log('Signin state changed to ', val);
};
/**
 * Listener method for when the user changes.
 *
 * @param {GoogleUser} user the updated user.
 */
var userChanged = function (user) {
  console.log('User now: ', user);
  googleUser = user;
};

$('.login-button').on('click', function() {
    console.log('signing in')

    auth2.signIn().then(function(user) {
        //callback to handle sign in
        onSignIn(user);
    });
})

我不确定是什么导致 Google 登录问题无法在 mozilla 上运行。如果有人知道这是一个已知问题,请在评论中告诉我。

底线: easy integration的 Google Sign In 不适用于 Mozilla。不得不integrate using listeners .

关于javascript - Google 登录 API 不适用于 Mozilla Firefox,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32198359/

相关文章:

javascript - 如何沿着圆形路径旋转物体?

php - 使用 confirm() 后,在 'ok' 上运行 PHP 代码

python - Selenium-python 下载但文件保存为 .part

javascript - 带有/g 修饰符和 eval 的正则表达式文字 - FireFox 和 Chrome 中的奇怪行为

swift - 使用 FIRAuth.auth()?.signIn(withEmail 登录后, GIDSignIn.sharedInstance().hasAuthInKeychain() 为空

ios - Google SDK iOS - sign() 方法完成处理程序

javascript - 在功能 block 中管理特殊 "this"对象的属性

javascript - ng-repeat 将空白行返回到表中

python - 无法在 Selenium 中找到元素

java - 尝试检索从 Google 登录下载的位图时出现 Skia 错误