django - 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 中获得的访问令牌有问题,但我不知道如何解决这个问题。
解决方案
推荐阅读
- three.js - 如何在三个 JS 中将相机在左、右、顶和底侧旋转 90 度
- eclipse - Eclipse 在发布到 WebSphere 时未从 EAR 中读取使用 Maven 编译的 Web 模块值的正确上下文根
- google-app-engine - 在 GCP 上,有没有办法配置具有多区域可用性的 App Engine + Cloud Datastore 应用程序?
- ant - 如何在 JMeter 测试计划的 ant 报告中获取断言结果
- r - 我该如何调试:在使用 sdr 权重运行 svyby 后出现“colSums 中的错误(wts [,i] * x * pw)”?
- kubernetes - 节点端口的 K8s 入口。初学者示例
- javascript - 如何使通过 useState 钩子改变状态的函数可重用?
- javascript - 将大文件(更多 2GB)转换为 base64 字符串转换时浏览器断开连接
- c# - SendKeys.SendWait(" "); 抛出 StackOverFlowException
- javascript - 如何在 jQuery 中仅提取 window.location.pathname 的最后一部分?(内有详细说明)