我有OAuth和请求正文的跟随POST请求
OkHttpClient client = new OkHttpClient();
MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded");
RequestBody body = RequestBody.create(mediaType, "firstname=martin");
Request request = new Request.Builder()
.url("http://127.0.0.1:8080/api/people/new")
.post(body)
.addHeader("authorization", "OAuth oauth_consumer_key=\"5jyytn5guw84os48scckwkkwkkckwkowcgow04g04oc84kg0c4\",oauth_token=\"qwertzuiop\",oauth_signature_method=\"HMAC-SHA1\",oauth_timestamp=\"1465370390\",oauth_nonce=\"rFED5R\",oauth_version=\"1.0\",oauth_signature=\"aU2zedmum%2BwO3I%2FesAv159nLE8o%3D\"")
.addHeader("cache-control", "no-cache")
.addHeader("content-type", "application/x-www-form-urlencoded")
.build();
Response response = client.newCall(request).execute();
问题是请求正文(带有form-urlencoded参数)和生成的oauth_signature
。如果没有正文,我生成的签名是完全正确的,并且调用很顺利,但在添加请求正文之后,调用失败并显示401 - unauthorized
我认为只有oauth标头参数与oauth_signature计算相关?我绝对迷失了,并希望得到任何帮助。
答案 0 :(得分:0)
好吧,显然我错了。实际上,您必须考虑使用body参数来创建签名。
接下来,收集请求中包含的所有参数。有 这些附加参数的两个这样的位置 - URL(作为一部分 查询字符串)和请求正文。
对于每个与此类似问题挣扎的人,我都可以推荐Twitters指南来创建签名和OAuth。请参阅以下链接