【问题标题】:How to fix twitter response code=400, message=Bad Request?如何修复 twitter 响应代码 = 400,消息 = 错误请求?
【发布时间】:2020-07-21 13:49:56
【问题描述】:

我在android中集成了witter登录。但在响应时,它总是在 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>

谁能告诉我如何解决这个问题?

【问题讨论】:

    标签: android androidx android-twitter


    【解决方案1】:

    错误的请求意味着您发送到服务器的请求不是它所期望的方式或形式。文档对这个请求有什么看法?是帖子吗?一个得到?如果是 POST,那么你应该发送一个 Body。

    要发送正文和 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)中尝试对服务器进行相同的调用并查看它是否在那里工作总是一个好主意?这是确定问题是在服务器端还是在您的应用程序端的好方法。

    让我知道它是否有效

    【讨论】:

    • 我正在使用 POST 请求并发送正文。这些问题导致从 Twitter 发布授权并返回应用屏幕。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-08
    • 2019-09-24
    • 1970-01-01
    • 1970-01-01
    • 2023-01-28
    • 2020-01-12
    相关资源
    最近更新 更多