kag*_*ker 7 dart google-signin flutter
我正在尝试将我的用户连接到后端服务器,我使用了来自google官方登录插件的例子:https : //pub.dartlang.org/packages/google_sign_in
签名过程进行得很好,我得到了用户名和电子邮件等。但是我需要使用ID令牌才能通过我的服务器对用户进行身份验证。
附:不使用firebase,只有google登录。
谁能指导我如何获取ID令牌?
non*_*hto 18
您可以尝试使用此
_googleSignIn.signIn().then((result){
result.authentication.then((googleKey){
print(googleKey.accessToken);
print(googleKey.idToken);
print(_googleSignIn.currentUser.displayName);
}).catchError((err){
print('inner error');
});
}).catchError((err){
print('error occured');
});
Run Code Online (Sandbox Code Playgroud)
该问题可能与不使用 firebase 有关。当您在 firebase 中注册应用程序时,会提供一个 google-services.json 文件,您可以将其与 google_sign_in 一起使用(这是文档中显示的默认方式)。
当我尝试在没有 google-services.json 的情况下实现此操作时,令牌值为 null,但成功登录到 google。
如果您不想使用 firebase,则必须跳过几个环节。
android/app/src/main/res/values/strings.xml<?xml version="1.0" encoding="utf-8"?> <resources> <string name="default_web_client_id">YOUR WEB CLIENT ID</string> </resources>strings.xml 文件。我相信应该可以做到,可能错过了一步。
我还想在后端验证传入的 idtoken 是否有效,因此我还必须创建一个服务帐户(在 api 和服务 -> 凭据页面中)并在我的 go 服务器中使用它。
我仍然在努力让它在 ios 上工作,但 android 端工作得很好。
您可以更简单地获取访问令牌和 ID 令牌,如下所示:
final result = await _googleSignIn.signIn();
final ggAuth = await result.authentication;
print(ggAuth.idToken);
print(ggAuth.accessToken);
Run Code Online (Sandbox Code Playgroud)
或者你也可以将它添加到 try-catch 中来处理错误。
try {
final result = await _googleSignIn.signIn();
final ggAuth = await result.authentication;
print(ggAuth.idToken);
print(ggAuth.accessToken);
} catch (error) {
print(error);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1559 次 |
| 最近记录: |