我正在尝试使用新的Google Play服务8.3获取用户令牌ID,并且如我所述,我传递了服务器ID:
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestIdToken(getString(R.string.server_client_id))
.requestEmail()
.build();
Run Code Online (Sandbox Code Playgroud)
但是我仍然得到如下结果:
{statusCode=unknown status code: 12501, resolution=null}
Run Code Online (Sandbox Code Playgroud)
并记录在这里 GoogleSignInStatusCodes
登录已被用户取消.即,用户取消了一些登录决议,例如,帐户选择或OAuth同意.
常数值:12501
这不是我的情况,因为我已经选择了一个帐户.任何想法可能是什么原因?
我正在使用谷歌登录服务来验证使用我的应用程序的用户.当我刚要求电子邮件信息时,我得到了它的工作
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestEmail().build();
Run Code Online (Sandbox Code Playgroud)
然后,我发现我还需要请求ID令牌才能使用我的后端进行身份验证,所以我做了:
GoogleSignInOptions gso = new GoogleSignInOptions.Builder(GoogleSignInOptions.DEFAULT_SIGN_IN)
.requestIdToken(String.valueOf(R.string.server_client_id))
.requestEmail().build();
Run Code Online (Sandbox Code Playgroud)
问题是它不会让我在更改后登录.我每次尝试登录时都会得到的状态是Status{statusCode=unknown status code: 12501, resolution=null}.
我一直在寻找,我发现这篇文章几乎是一回事.但是,我没有回答任何人所提出的任何错误,我的开发控制台中的oAuth客户端ID用于Web应用程序:
并且R.string.server_client_id是图片中的第一个客户端ID.包名称当然是正确的,否则它甚至在没有令牌请求的情况下也无法工作.2人还建议应用程序需要签名才能使用,但googles文档说调试密钥也应该工作,并且让人们签署应用程序进行调试没有意义.
我一直在试图解决这个问题几个小时但没有成功.可能是什么问题呢?请随时索取我可能忘记放在这里的更多信息.
我正在使用Google登录.用户来到我的站点并登录gapi.auth2.getAuthInstance().signIn(),或者他们已经登录,当页面加载(或重新加载)时,我们获取状态.在这一点上,我有一个身份令牌好一个小时,我可以在服务器上验证.
当用户离开浏览器(例如,过夜)时,此令牌将过期.gapi.auth2.getAuthInstance().isSignedIn.get()返回true,但令牌不验证.
如何登录用户并在会话处于活动状态时保持登录状态(即浏览器尚未关闭)?或刷新令牌?比重新加载页面更优雅的东西......
编辑:刷新令牌不是正确的答案; 我不想离线访问(并且不想要求权限).谷歌显然认为用户仍然登录我的应用程序; 用户可以重新加载页面并获取新令牌而无需再次提供凭据.当然有一些机制比隐藏的iframe更优雅,以获得更新的令牌?
我已经在我的应用中实施了Google登录SDK,一切正常.
当我点击登录按钮 - 我得到已存储帐户的窗口.我选择其中一个,登录的整个过程以成功结束.
但是有一个用例我无法通过,我不知道如何解决这个问题:
我跟着谷歌指令"实施登录SDK"并在调用这些行之后:
Task<GoogleSignInAccount> task = GoogleSignIn.getSignedInAccountFromIntent(data);
GoogleSignInAccount googleSignInAccount = task.getResult(ApiException.class);
Run Code Online (Sandbox Code Playgroud)
我捕获状态代码为12501的异常SIGN_IN_CANCELLED.
正如我之前所说,这是因为其中一个存储的帐户密码无效.
如何让用户重定向到此蓝色Google登录页面并保持当前流量?
例如,AliExpress可以以某种方式处理此问题并将用户重定向到蓝页,并要求用户再次登录.
我的代码与Google的说明没有太大区别.这是我的代码流程.一切都从onClick():
在onClick()方法中:
// Logout before all operations
GoogleSignInAccount account = GoogleSignIn.getLastSignedInAccount(this);
if (account != null) {
mGoogleSignInClient.signOut();
}
// Call to sign in
Intent signInIntent = mGoogleSignInClient.getSignInIntent();
startActivityForResult(signInIntent, RequestCodes.RC_GOOGLE_SIGN_IN);
Run Code Online (Sandbox Code Playgroud)
在onActivityResult部分:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
Log.d(TAG, "onActivityResult() called with: requestCode = [" + requestCode + "], resultCode = …Run Code Online (Sandbox Code Playgroud) 根据我的理解,Google身份识别工具包提供了一个用于登录不同帐户的层,例如Facebook,Yahooo等,但这与Google OAuth实施有何不同?关于Google+登录,它仍在使用OAuth,但仅启用Google帐户登录?
oauth google-plus google-identity-toolkit firebase-authentication google-identity
在我的 Android 应用中实现的 Google Smart Lock 功能。我正在尝试将密码黑白同步我的网站和我的 Android 应用程序。
根据本文件:https : //developers.google.com/identity/smartlock-passwords/android/associate-apps-and-sites
我已经完成了所有需要的更改。
我的网站网址是https: //auth-test. Centurylink.com
数字资产链接文件上传至服务器链接:https : //auth-test. Centurylink.com/.well-known/assetlinks.json
在清单中,我添加了以下代码。
<meta-data android:name="asset_statements" android:resource="@string/asset_statements" />
在 String.xml 中
<string name="asset_statements" translatable="false">[{\"include\": \"https://auth-test.centurylink.com/.well-known/assetlinks.json\"</string>
应用程序已发布到 Beta 版的 Play-store,2 周前。还多次提交了网站/应用程序凭据链接表,
仍然没有收到任何确认邮件,也没有收到任何错误。
解决问题或与团队沟通的最佳方式是什么?网页和应用同步密码需要多长时间?
android google-chrome google-smartlockpasswords google-identity
我正在使用Google Identity 中的“使用 Google 登录”按钮。我已将此按钮文档页面中的 HTML放入 React 组件中。看起来像这样:
export default function GoogleLoginButton() {
return (
<>
<div
id="g_id_onload"
data-client_id="XXXXXX"
data-auto_prompt="false"
></div>
<div
className="g_id_signin"
data-type="standard"
data-size="large"
data-theme="outline"
data-text="sign_in_with"
data-shape="rectangular"
data-logo_alignment="left"
></div>
</>
);
}
Run Code Online (Sandbox Code Playgroud)
第一次加载页面时,Google 登录按钮正确显示,我可以登录。然后登录按钮被注销按钮取代。问题是,当我单击应该再次呈现 Google 登录按钮的注销按钮时,它不会重新出现!这是为什么?
我可以补充一点,注销后刷新页面会返回 Google 按钮。
我想这与https://news.ycombinator.com/item?id=17044518#17045809有关,但谷歌yolo停止为每个人工作.我像许多人一样用它来登录,它只是停止工作.
我的域名显然已添加到console.developers.google.com上
任何ETA都可以解决这个问题?对于依赖它的人来说,一些信息会很棒.
最好的祝福
我正在关注https://developers.google.com/identity/gsi/web/guides/display-button#javascript将 Google 登录添加到我的 ReactJS 应用程序中。
我添加了
<script>
function handleCredentialResponse(response) {
console.log("Encoded JWT ID token: " + response.credential);
}
window.onload = function () {
google.accounts.id.initialize({
client_id: "YOUR_GOOGLE_CLIENT_ID",
callback: handleCredentialResponse,
});
google.accounts.id.renderButton(
document.getElementById("buttonDiv"),
{ theme: "filled_blue", size: "large", shape: "pill" } // customization attributes
);
google.accounts.id.prompt(); // also display the One Tap dialog
};
</script>
Run Code Online (Sandbox Code Playgroud)
在 中index.html,在我的组件中,我有一个<div id="buttonDiv"></div>.
但是,当我重新加载页面时会发生以下情况:
加载的初始按钮是正确的,但不知何故调整了大小。我在调试器中暂停了JS执行,发现最初的按钮纯粹是divs,但是调整大小后,它用了aniframe代替。