【问题标题】:React Native Google Authenticate with Django Allauth returns "Incorrect value" (iOS/Android)React Native Google Authenticate with Django Allauth 返回“不正确的值”(iOS/Android)
【发布时间】:2021-06-30 18:58:57
【问题描述】:

我正在尝试使用 react native ios 和 android 执行社交身份验证(使用 Google),后端使用 Django。请注意,这里不涉及火力基地。

问题概述

当用户通过 google 进行身份验证时,前端的 React Native Google Signin 会返回 (i) access_token 和 (2) 代码。使用 django rest auth,我们向后端服务器发送一个 post 请求并返回 "non_field_errors: ["Incorrect value"]

使用的插件:

React Native Google Sigin

Django All Auth

Django Rest Auth

过程

Google Cloud Console 设置(OAuth 2.0 客户端 ID)

在 Google Cloud Console 中设置了 3 种类型

  • A) Web 应用程序(ClientId + Secrete)
  • B) Android(仅限 ClientId)
  • C) iOS(仅 ClientId)

在前端(React Native Google 登录)

   async componentDidMount () {
GoogleSignin.configure({
  webClientId: 'ABC-123',    (i.e. A above)
  iosClientId: 'ABC-456',    (i.e. C above)
});

}

在后端 (Django Allauth)

根据谷歌文档设置了 1 个模型对象,Google,A) Web 应用程序 (ClientId + Secrete)

用户通过前端登录

当用户在手机、Android 或 iOS 上的应用中通过 google 进行身份验证时,会返回一个令牌和代码。通过 Django Rest Auth {access_token: 'cdeasdlkjla', code:'adkj'} 发送这个返回 "non_field_errors: ["Incorrect value"]

想法!?

【问题讨论】:

  • 据我所知,您在移动端的设置看起来不错。也许你没有正确设置后端。也许this 回答会有所帮助
  • 在网页版上,我使用的是“react-google-login”,它返回的 access_token 在后端运行良好。使用相同的设置 iOS/Android 不断失败。我尝试在 alluath 模型设置中交换客户端 ID,但没有成功。
  • 谢谢 Kapobajza,问题是反应原生谷歌登录在初始步骤产生 id_token,而不是 access_token。 id_token =/= access_token。只需几行额外的代码即可获得 access_token。现在一切都好!

标签: react-native django-allauth django-rest-auth


【解决方案1】:

在@Kapobajza 回复的帮助下,我发现了问题。

Django AllAuth Google Social Auth 接受“access_token”

React Native Google Sigin 的默认值为 'id_token'

请注意,'access_token' =/= 'id_token'

因此,有两种解决方案:

  1. 后端:Django AllAuth 应该支持 id_token。在撰写本文时,它没有。 在下面的链接中有一个开放的票证,这导致了一种手动支持它的方法 https://github.com/pennersr/django-allauth/issues/1983

或者:

  1. 前端:React Native Google Sigin 只需一小步即可生成访问令牌。如下图,Step4

How to get accessToken of React Native GoogleSignIn?

最佳解决方案是 2

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-10
    • 2014-05-14
    • 1970-01-01
    • 2014-02-23
    • 1970-01-01
    • 2013-02-12
    • 2019-03-27
    • 1970-01-01
    相关资源
    最近更新 更多