我是翻新的新手,我正在尝试使用改造和Instagram API向特定媒体发送评论。 Instagram API告诉我,我的请求必须是:
curl -F 'access_token=ACCESS-TOKEN'
-F 'text=This+is+my+comment'
https://api.instagram.com/v1/media/{media-id}/comments
并且JSON响应是:
{
"meta":
{
"code": 200
},
"data": null
}
所以我做了这个改进语法:
@FormUrlEncoded
@POST("v1/media/{media_id}/comments")
Call<Object> postComment(
@Path("media_id") String mediaId,
@Field("access_token") String accessToken,
@Field("text") String text);
我的改造服务:
public class RestClient
{
public static RetrofitInstagram getRetrofitService()
{
return new Retrofit.Builder()
.baseUrl(Constants.AUTH_URL)
.addConverterFactory(GsonConverterFactory.create())
.build().create(RetrofitInstagram.class);
}
}
我的调用(在AlertDialog内部从EditText获取文本)是:
Call<Object> call = RestClient.getRetrofitService().postComment(data.get(idx).getId(), access_token, titleEditText.getText().toString());
call.enqueue(new Callback<Object>()
{
@Override
public void onResponse(Call<Object> call, Response<Object> response)
{
Log.d("response comment", ""+response.raw());
Toast.makeText(activity_instagram_feed_search.this, "Comments sent", Toast.LENGTH_SHORT).show();
}
@Override
public void onFailure(Call<Object> call, Throwable t)
{
Toast.makeText(activity_instagram_feed_search.this, "error", Toast.LENGTH_SHORT).show();
}
});
我的问题是我收到代码400错误(缺少client_id或access_token URL参数。)。
就像api认为我正在做GET请求。
我真的很困惑,我会感激一些智慧:)。
答案 0 :(得分:0)
我设法找到了我的问题的解决方案。 所以Ben P错了,Curl -F是x-www-form-urlencoded。
我处于沙箱帐户模式,忘记将注释范围添加到我的登录名 WebView请求。
所以我的WebView网址现在是:
private final String url = Constants.AUTH_URL
+ "oauth/authorize/?client_id="
+ Constants.CLIENT_ID
+ "&redirect_uri="
+ Constants.REDIRECT_URI
+ "&response_type=token"
+ "&display=touch&scope=public_content+comments";