当前位置:编程学习 > wap >>

发新浪微博,oauth授权后取到token和secret,但是在发微博的时候说signature_invalid

oauth主要用的是signpost的,代码主要是这一块:
	
    class SendListener implements OnClickListener {
     public void onClick(View v) {
     HashMap<String,String> map = new HashMap<String,String>();
map.put("status","myweibo");
String oauthToken = getSharedPreferences("data", 0).getString("OAUTH_TOKEN", "");
String oauthTokenSecret = getSharedPreferences("data", 0).getString("OAUTH_TOKEN_SECRET", "");
System.out.println("oauthToken="+oauthToken + "oauthTokenSecret" + oauthTokenSecret);
WeiboClient client = new WeiboClient("4237870191","4d55a74c457f95ffb8105f0ec8107137",oauthToken,oauthTokenSecret);
client.doPost("http://api.t.sina.com.cn/statuses/update.json", map);
}
    }

 public static void doPost(String url, Map<String,String> map){
 HttpPost post = new HttpPost(url);
 Iterator<String> it = map.keySet().iterator();
 System.out.println(map.size());
 HttpParameters param = new HttpParameters();
 while (it.hasNext()) {
 String key = it.next();
String value = map.get(key);
param.put(key, URLDecoder.decode(value));
}
 
 consumer.setAdditionalParameters(param);
 
 try {
consumer.sign(post);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();


Header oauthHeader = post.getFirstHeader("Authorization");
System.out.println(oauthHeader.getValue());

HttpResponse response = null;
try {
System.out.println("before execute");
response = new DefaultHttpClient().execute(post);
System.out.println(getResponseText(response));
} catch (Exception e) {
e.printStackTrace();
}




取到的header信息是:
OAuth oauth_token="54ee9a3235147b7f0d50c201be7c7d17", oauth_consumer_key="4237870191", oauth_version="1.0", oauth_signature_method="HMAC-SHA1", oauth_timestamp="1320649129", oauth_nonce="7920138101552200009", oauth_signature="Q7JnGG1msLoMx4jgdy2mbBQIySY%3D".

response的信息是:
{"request":"/statuses/update.json","error_code":"401","error":"40107:Oauth Error: signature_invalid!"}

求高手帮看一下 --------------------编程问答-------------------- 没人,自己先顶一下。 --------------------编程问答-------------------- 还没人,我汗 --------------------编程问答-------------------- 还是没人 再顶 --------------------编程问答-------------------- 顶一个吧……没看懂,签名非法 --------------------编程问答-------------------- 对比了一下新浪官网上的header例子,发现跟我的基本上一样的。
//新浪介绍上提供的header
OAuth oauth_nonce="oElnnMTQIZvqvlfXM56aBLAf5noGD0AQR3Fmi7Q6Y",
 oauth_signature_method="HMAC-SHA1",
  oauth_timestamp="1272325550",
   oauth_consumer_key="GDdmIQH6jhtmLUypg82g",
    oauth_token="819797-Jxq8aYUDRmykzVKrgoLhXSq67TEa5ruc4GJC2rWimw", 
    oauth_signature="yOahq5m0YjDDjfjxHaXEsW9D%2BX0%3D",
     oauth_version="1.0"
//我的header
OAuth oauth_token="54ee9a3235147b7f0d50c201be7c7d17",
 oauth_consumer_key="4237870191",
  oauth_version="1.0",
   oauth_signature_method="HMAC-SHA1",
   oauth_timestamp="1320649129",
    oauth_nonce="7920138101552200009", 
   oauth_signature="Q7JnGG1msLoMx4jgdy2mbBQIySY%3D". --------------------编程问答-------------------- 帮你高亮一下 获得授权玩微薄的朋友帮忙看一下吧  --------------------编程问答-------------------- 签名出错了,不能换个腾讯微博试试看 --------------------编程问答-------------------- http://forum.open.weibo.com/read.php?tid=2094 --------------------编程问答-------------------- 尝试将所有参数(OAuth参数 和 status/update API参数)参与签名计算并通过Post Body发送所有数据(无需用HTTP Header)。
参见开源项目AMicroblogAPI: http://amicroblogapi.codeplex.com
下载源码,参阅AMicroblog.cs line 386
--------------------编程问答-------------------- thank you 
引用 6 楼 yiyaaixuexi 的回复:
帮你高亮一下 获得授权玩微薄的朋友帮忙看一下吧
--------------------编程问答-------------------- 这个我看到了,他是发图片的问题,跟我这还不大一样,谢啦

引用 8 楼 wang_cheryl 的回复:
http://forum.open.weibo.com/read.php?tid=2094
--------------------编程问答-------------------- 腾讯的还要复杂点貌似。
引用 7 楼 newhine 的回复:
签名出错了,不能换个腾讯微博试试看
--------------------编程问答-------------------- 顶一下,哪位大虾会的帮忙看下 --------------------编程问答-------------------- 顶一下,哪位大虾会的帮忙看下 --------------------编程问答-------------------- 顶一下,哪位大虾会的帮忙看下 --------------------编程问答-------------------- 我也遇到了这个问题, 你解决了吗??
--------------------编程问答--------------------
顶顶顶顶顶顶顶!
补充:移动开发 ,  Android
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,