我将witter登录集成到了android中。但是在响应时,它总是让我回到logcat中:
code=400, message=Bad Request
和
"data":"{\"+clicked_branch_link\":false,\"+is_first_session\":false}",
如果要打印令牌,我将在logcat中看到令牌和秘密值。但是响应始终返回400。我在这里使用分支IO进行深度链接。
public void attachTwitter(String token, String secret) {
apiService.attachTwitterAccount(PreferenceHandler.readString(EditProfileActivity.this, SIGNIN_ID, ""),
token, secret, "twitter").enqueue(new Callback<Object>() {
@Override
public void onResponse(Call<Object> call, Response<Object> response) {
Log.i("accessToken", "onResponse");
if (!response.isSuccessful()) {
try {
JSONObject object = new JSONObject(response.errorBody().string());
JSONObject error = object.optJSONObject("error");
String code = error.optString("code");
String description = error.optString("description");
if (code.equalsIgnoreCase("338")) {
showCustomDialog(EditProfileActivity.this, string(R.string.server_error_description_338));
switchTwitter.setChecked(false);
}
} catch (Exception e) {
}
}
}
@Override
public void onFailure(Call<Object> call, Throwable t) {
Log.i("accessToken", "onFailure");
switchTwitter.setChecked(false);
}
});
}
attachTwitterAccount方法的代码为:
@FormUrlEncoded
fun attachTwitterAccount(@Field("id") id: String,
@Field("authToken") token: String,
@Field("authSecret") authSecret: String,
@Field("typeAttach") typeAttach: String): Call<Any>
有人可以建议我如何解决此问题吗?
答案 0 :(得分:1)
错误的请求意味着您发送到服务器的请求与期望的方式或形式不符。文档对该请求说了什么?是邮政吗?得到?。如果是POST,则应发送一个正文。
要发送正文和POST,您首先需要为正文创建一个类。在Kotlin中,应该是这样的:
class Body(var id: String,
var authToken: String,
var authSecret: String,
var accomplished: Double,
var typeAttach: String
)
然后您在请求中称呼身体:
@POST("post value which")
fun attachTwitterAccount(@Body body:Body): Call<Any>
最后,从附加的Twitter功能中调用它。创建您的Body实例,然后将其作为参数传递。
如果仍然遇到相同的错误,请检查Twitter文档,您可能缺少某些内容。
在其他环境(例如Postman)中尝试对服务器的相同调用始终是个好主意,看看它是否在那里工作?这是确定问题是在服务器端还是在应用程序端的好方法。
让我知道它是否有效