谷歌使用django rest auth登录Android

谷歌使用django rest auth登录Android,android,django,authentication,oauth,django-rest-auth,Android,Django,Authentication,Oauth,Django Rest Auth,我一直在尝试在安卓系统中添加谷歌登录,但有一些疑问。 来自Android文档 在服务器端身份验证部分中,需要客户端Id,这是后端服务器的OAuth 2.0 web应用程序客户端Id 来自android的文档: 获取后端服务器的OAuth 2.0客户端ID 如果应用程序通过后端服务器进行身份验证或从后端服务器访问Google API,则必须获取为服务器创建的OAuth 2.0客户端ID。查找OAuth 2.0客户端ID 根据我的理解,流程是: Android应用程序将从google获得auth

我一直在尝试在安卓系统中添加谷歌登录,但有一些疑问。 来自Android文档 在服务器端身份验证部分中,需要客户端Id,这是后端服务器的OAuth 2.0 web应用程序
客户端Id

来自android的文档:

获取后端服务器的OAuth 2.0客户端ID 如果应用程序通过后端服务器进行身份验证或从后端服务器访问Google API,则必须获取为服务器创建的OAuth 2.0客户端ID。查找OAuth 2.0客户端ID

根据我的理解,流程是:

  • Android应用程序将从google获得
    auth code
    ,该代码将被传递到后端
  • 后端将从安卓应用程序和
    客户端密码
    获取
    访问令牌
  • 使用
    access令牌
    我们可以获得用户信息,
    access令牌
    保存在数据库中
我的疑问是:

  • 我在StackOverflow的某个地方读到,我们需要创建两个OAuth客户端,一个用于Android,另一个用于Web应用程序。这是真的吗
  • Django Rest Auth登录视图需要定义一个
    redirect\u url
    ,但我不知道Android设备的
    redirect\u uri
    是什么,或者我们需要在从Google获取
    Auth code
    时传递此url
  • 在OAuth操场上,我把我后端的
    客户id
    客户机密
    放在一起,得到了
    身份验证码
    ,当我把这个
    身份验证码
    传递到我的登录视图时,我得到了
    重定向uri不匹配
    ,但是如果我把
    重定向url='developer.google.com'
    放在上面,我猜
    auth-code
    包含从何处生成的主机信息,这就是为什么这应该与我的rest-auth视图中的
    redirect\u-url
    相同,但对于android来说应该是什么
  • 这是我的谷歌登录视图

    class GoogleLogin(SocialLoginView):
        adapter_class = GoogleOAuth2Adapter
        client_class = OAuth2Client
        callback_url = 'localhost:8000' # What this should be?
    
    如果我忘了放,请询问更多信息

    我在用这个

    一些有用的链接-

    • #它说回调URL可能是假的,但我得到了
      重定向\u uri\u不匹配

    最后,我找到了答案,回答了我自己的问题,这样别人可能会觉得这很有帮助

  • 是的,您需要两个客户端id,一个用于Android设备,一个用于web应用程序
  • 只需在GoogleLoginView中添加as
    callback\uURL
    ,并将其放入您的Google开发者控制台
  • 我不知道Android生成的身份验证代码是否包含任何主机信息,但只要您在login view类和google开发者控制台中添加的回调URL相同,它就可以工作
  • 您的Google登录视图应该如下所示

    class GoogleLogin(SocialLoginView):
        authentication_classes = (JSONWebTokenAuthentication,)
        adapter_class = GoogleOAuth2Adapter
        callback_url = 'http://localhost:8000/accounts/google/login/callback/'
        client_class = OAuth2Client
    
    注意:如果要将身份验证代码传递到此视图,则只需要
    callback\u url
    client\u class
    ,但如果要传递
    access\u令牌
    ,则不需要
    callback\u url
    client\u class


    您好,您可以制作一个YouTube视频吗?因为我在Android中实现了firebase Google登录,我不知道如何连接Django rest框架?您是否设法解决了这个问题。我仍然不知道它是如何工作的。我得到的是Id令牌和getserverauth代码,这是必需的。你能分享代码吗?