You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Google One Tap登录报错noCredentialsAvailable问题求助

Google One Tap登录报错:noCredentialsAvailable: No credential is available for the current user

我正在为网站集成Google One Tap登录功能,之前运行正常,但昨天开始突然出现以下报错:

noCredentialsAvailable: No credential is available for the current user

我已经查阅了官方故障排查指南,确认以下配置都没有问题:

  • 域名已在Google开发者控制台添加白名单
  • 当前已登录Google账号
  • 已启用Smart Lock功能
  • 使用Chrome浏览器版本:Versión 66.0.3359.170(官方版本)(64位)

相关实现代码如下:

var Element_Login_AutologinGoogle = function (force) { 
  this.methods = { 
    supportedAuthMethods: [ "https://accounts.google.com" ], 
    supportedIdTokenProviders: [ 
      { 
        uri: "https://accounts.google.com", 
        clientId: "xxxx-xxxx.apps.googleusercontent.com" 
      } 
    ], 
    context: 'continue' 
  }; 
  this.init(force); 
}; 

Element_Login_AutologinGoogle.prototype.signup = function (googleyolo) { 
  var that = this, hintPromise = googleyolo.hint(that.methods); 
  hintPromise.then((credential) => { 
    if (credential.idToken) { 
      // Send the token to your auth backend. 
      that.emagisterLogin(credential.idToken); 
    } 
  }, (error) => { 
    switch (error.type) { 
      case "userCanceled": 
        // The user closed the hint selector. Depending on the desired UX, 
        // request manual sign up or do nothing. 
        break; 
      case "noCredentialsAvailable": 
        // No hint available for the session. Depending on the desired UX, 
        // request manual sign up or do nothing. 
        break; 
      case "requestFailed": 
        // The request failed, most likely because of a timeout. 
        // You can retry another time if necessary. 
        break; 
      case "operationCanceled": 
        // The operation was programmatically canceled, do nothing. 
        break; 
      case "illegalConcurrentRequest": 
        // Another operation is pending, this one was aborted. 
        break; 
      case "initializationError": 
        // Failed to initialize. Refer to error.message for debugging. 
        break; 
      case "configurationError": 
        // Configuration error. Refer to error.message for debugging. 
        break; 
      default: 
        // Unknown error, do nothing. 
    } 
  }); 
};

可能的排查方向及解决方案

既然你已经确认了基础配置没问题,那咱们可以从几个容易忽略的点入手:

1. 检查Chrome的Smart Lock存储状态

虽然你说已经启用了Smart Lock,但有时候浏览器可能会丢失存储的凭据,或者当前账号的凭据没有关联到你的域名。你可以打开Chrome的设置 → 密码,检查是否有对应网站的Google登录凭据。如果没有,尝试手动登录一次你的网站(用Google账号),让Smart Lock重新存储凭据。

2. 调整context参数的场景设置

你的代码里设置了context: 'continue',这个参数是用来告诉Google用户当前的操作场景。如果用户之前没有在你的网站上完成过Google登录,或者很久没登录,这个「续登」场景可能不会触发凭据提示。可以尝试将context改为'signin',这个场景更适合明确的登录流程:

context: 'signin'

3. 清理浏览器缓存与Cookie

过期的Cookie或缓存可能干扰One Tap的凭据检测逻辑。尝试清除网站相关的Cookie和缓存(设置 → 隐私和安全 → 清除浏览数据,选择Cookie和缓存文件),然后重新登录Google账号再测试。

4. 复查Google开发者控制台的OAuth配置

除了域名白名单,还要确认:

  • OAuth 2.0客户端ID的类型是「Web应用」
  • 已将网站的完整URL(包括http/https)添加到「已获授权的JavaScript来源」和「已获授权的重定向URI」中(即使One Tap可能不需要重定向,部分配置缺失仍会影响凭据检测)
  • 检查客户端ID是否与代码中的一致,是否最近有重新生成过客户端ID导致不匹配

5. 升级Chrome浏览器版本

你使用的Chrome 66版本比较老旧,Google的One Tap功能在新版本浏览器中有更好的兼容性和 bug 修复。尝试升级到最新稳定版Chrome,排除版本兼容性问题。

6. 排查浏览器扩展冲突

隐私保护类、广告拦截类的扩展可能会阻止Google One Tap的脚本运行或凭据检测。可以尝试在隐身模式下测试(隐身模式默认禁用扩展),如果隐身模式下正常,那就是某个扩展导致的冲突,逐一禁用扩展排查即可。

最后,测试时记得打开Chrome开发者工具(F12)查看Console面板,是否有其他隐藏的错误信息,这些细节往往能帮你定位更具体的问题。

内容的提问来源于stack exchange,提问作者MrCester

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 07:19:23