我想使用Flutter的Google登录(https://pub.dev/packages/google_sign_in)软件包不使用 Firebase。我已经使用以下代码成功实现了它:
GoogleSignIn _googleSignIn = GoogleSignIn(
scopes: [
'email',
'https://www.googleapis.com/auth/contacts.readonly',
],
);
Future<void> _handleSignIn() async {
try {
await _googleSignIn.signIn();
} catch (error) {
print(error);
}
}
//...
child: FlatButton(
onPressed: () => _handleSignIn(),
//...
但是,这会在浏览器中启动oauth。如何停止浏览器启动,而是显示打开用于oauth的漂亮对话框?
我已经看到了Google登录Flutter软件包与Firebase Auth结合使用以进行应用内身份验证的示例。但是,如果没有firebase身份验证,是否可以这样做?
我还从这里(How is OAuth 2 different from OAuth 1?)了解到,oauth 2.0是我需要用于应用内身份验证的内容。这是否意味着我不能使用google-sign-in软件包?似乎此程序包仅使用oauth1。这是正确的吗?
我也看到了这个oauth2.0 flutter软件包(https://pub.dev/packages/oauth2)。是否可以将其与google-signin结合使用以实现应用内身份验证,而不是启动浏览器?
我对一切之间的相互关系有些困惑,我们将不胜感激。谢谢!
答案 0 :(得分:0)
OAuth 1.0已过时,不应使用。
OAuth 2.0需要“用户”提供授权才能将权限委派给您的应用程序。 OAuth 2.0旨在防止凭据(密码)共享,而Google(作为您的授权服务器)将不允许您显示一个对话框,该对话框可能允许您访问用户的凭据。
您应该提供有关特定用例的更多详细信息。
您也许可以使用类似OAuth 2.0 Device Authorization Grant
您可以使用代码设置套接字以侦听授权服务器的响应,以获取访问(或刷新)令牌。
答案 1 :(得分:0)
我意识到发生这种情况的原因是因为我在使用iphone模拟器。