首页 > 解决方案 > django-rest-auth with Google:如何正确发布访问令牌

问题描述

我真的很陌生使用retrofit2. 我正在尝试从移动应用程序向后端发送访问令牌并通过 Google 对用户进行身份验证,但我无法正确执行。后端返回400。我的代码是这样的。

views.py

from allauth.socialaccount.providers.google.views import GoogleOAuth2Adapter
from rest_auth.registration.views import SocialLoginView


class GoogleLogin(SocialLoginView):
    adapter_class = GoogleOAuth2Adapter

urls.py

path('rest-auth/google/', GoogleLogin.as_view()),

还有我的 Java 代码(我正在使用retrofit2

public interface ApiService {
    // login
    @POST("/rest-auth/google/")
    Call<String> login(@Header("access_token") String accessToken);

MainActivity.java

    private void login() {
    ApiService service = ApiClient.getService();

    service.login(mAuthToken).enqueue(new Callback<String>() {
        @Override
        public void onResponse(Call<String> call, Response<String> response) {

            if (!response.isSuccessful()) {
                Toast.makeText(MainActivity.this, "Code:" + response.code(), Toast.LENGTH_LONG).show();
                return;
            }

            Toast.makeText(MainActivity.this, "Success!", Toast.LENGTH_LONG).show();
        }

        @Override
        public void onFailure(Call<String> call, Throwable t) {
            mTextViewResult.setText(t.getMessage());
        }
    });
}

mAuthToken是访问令牌。我认为我将访问令牌传递给后端的方式是错误的。我可能错了retrofit2一部分。我有什么问题?

更新

我发现了一件事。我在 Android 中获得的访问令牌和我通过网站登录时获得的访问令牌显然不同。我删除了用户并在 html 表单中手动输入了访问令牌,请求被接受。

所以我想我在 Android 中获得的访问令牌有问题,但我不知道如何解决这个问题。

标签: djangodjango-rest-frameworkretrofit2django-rest-auth

解决方案


推荐阅读