gpt4 book ai didi

android - 使用 django-rest-auth 在 Android 中登录 Google

转载 作者:太空狗 更新时间:2023-10-29 13:46:08 24 4
gpt4 key购买 nike

我一直在尝试在 Android 中添加 Google 登录,但有几个疑问。来自 Android 文档 Integrate google sign in android在服务器端身份验证部分 Client Id 是必需的,它是后端服务器的 OAuth 2.0 Web 应用程序 client ID

来自android的文档:

Get your backend server's OAuth 2.0 client ID If your app authenticates with a backend server or accesses Google APIs from your backend server, you must get the OAuth 2.0 client ID that was created for your server. To find the OAuth 2.0 client ID

根据我的理解,流程是:

  • Android 应用将从 google 获取auth code,并将其传递到后端。
  • 后端将从 Android 应用程序和 客户端密码 获取带有 auth codeaccess token
  • 使用access token我们获取用户信息,access token保存在数据库中。

我的疑问是:

  1. 我在 StackOverflow 的某处读到我们需要创建两个 OAuth 客户端,一个用于 Android,一个用于 Web 应用程序。这是真的吗?
  2. Django Rest Auth Login View 需要定义一个 redirect_url 但我不明白在 Android 设备的情况下 redirect_uri 是什么,或者我们需要传递这个从 Google 获取 auth code 时的 URL。
  3. 在 OAuth Playground 上,我输入了后端的 client idclient secret 并获得了 auth code 当我通过这个 auth code 到我的登录 View 我得到了 redirect_uri_mismatch 但是如果我把 redirect_url = 'developer.google.com' 它有效,我猜 auth code 包含生成它的主机信息,这就是为什么这应该与我的 rest-auth View 中的 redirect_url 相同,但对于 android 它应该是什么?

这是我的 Google 登录 View 。

class GoogleLogin(SocialLoginView):
adapter_class = GoogleOAuth2Adapter
client_class = OAuth2Client
callback_url = 'localhost:8000' # What this should be?

如果我忘记放任何信息,请询问更多信息。

我正在用这个 django-rest-auth

一些有用的链接-

最佳答案

所以最后,我想通了,回答我自己的问题,这样有人可能会觉得这有帮助。

  1. 是的,您需要两个客户端 ID,一个用于您的 Android 设备,一个用于您的 Web 应用程序。
  2. 只需添加 http://localhost:8000/accounts/google/login/callback/作为 GoogleLoginView 中的 callback_url,并将其放入您的 Google 开发者控制台。
  3. 我不太清楚 Android 生成的授权代码是否包含任何主机信息,但似乎只要您在登录 View 类中添加的回调 URL 与在 Google 开发者控制台中添加的回调 URL 相同,它就会起作用.

您的 Google 登录 View 应如下所示。

class GoogleLogin(SocialLoginView):
authentication_classes = (JSONWebTokenAuthentication,)
adapter_class = GoogleOAuth2Adapter
callback_url = 'http://localhost:8000/accounts/google/login/callback/'
client_class = OAuth2Client

Note: You only need callback_url and client_class in case where you are passing the auth code to this view but if in you are passing the access_token then callback_url and client_class is not necessary.

关于android - 使用 django-rest-auth 在 Android 中登录 Google,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54049753/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com