为Instagram访问令牌改进GET。得到4xx,但我错过了什么?

时间:2016-02-22 12:23:44

标签: android instagram retrofit

https://www.instagram.com/developer/authentication/

我在最后一步(三)。我正在做一个GET请求,我得到了一个响应,但它现在成功了,我得到的代码400说我缺少client_id但是我没有错过它。我看到其他几个有同样的问题,但没有明确的解决方案。以下是相关代码,请看看有点新的改造。

    //here I am creating the request to send through retrofit...
    <!-- language: java -->
    TokenRequest request = new TokenRequest();
    request.setClient_id(Constants.CLIENT_ID);
    request.setClient_secret(Constants.CLIENT_SECRET);
    request.setGrant_type(Constants.AUTORISATION_CODE);
    request.setRedirect_uri(Constants.REDIRECT_URI);
    request.setCode(code);

//这是实际的请求             

        final Call<TokenResponse> accessToken =  ServiceManager.createTokenService().getAccessToken(request);
        accessToken.enqueue(new Callback<TokenResponse>() {
            @Override
            public void onResponse(Call<TokenResponse> call, Response<TokenResponse> response) {

                mtext.setText("hello");

                if(response.isSuccess()){
                    mtext.setText("success");
                }else{
                    try {
                        mtext.setText(response.errorBody().string());
                        //Log.d("mylog", response.errorBody().string());
                    } catch (IOException e) {
                        e.printStackTrace();
                    }

                }
            }

目前它没有进入if块而是在else块中显示错误。

1 个答案:

答案 0 :(得分:0)

我的API接口构建不正确,您可以检查错误的评论。正确的是下面的那个:

@FormUrlEncoded @POST("/oauth/access_token") 
Call<TokenResponse> getAccessToken(@Field("client_id") String client_id,
         @Field("client_secret") String client_secret,  
         @Field("redirect_uri") String redirect_uri, 
         @Field("grant_type") String grant_type, @Field("code") String code);

对于我来说,如果你遇到同样的问题,对于改造希望它会有所帮助,这真的很棘手!