2010-03-27 138 views
0

我正在尝试创建Google Chrome扩展程序,该扩展程序将向Twitter发送有趣的链接。但是,我无法连接到Twitter。服务器获取我的请求,但响应总是相同的:“您无权访问此服务器上的/1/statuses/update.json(403 Forbidden)。”我正在使用Wireshark来检查Http响应。这里是我正在使用的功能的代码:twitter API的问题:无法更新状态

function setStatus(msg) { 
var status = "status="+msg; 
var client = new XMLHttpRequest(); 
client.open("POST","http://api.twitter.com/1/statuses/update.json"); 
client.setRequestHeader("Authorization", "Basic <user credentials>"); 
client.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 
client.onreadystatechange = function(){ 
     if(client.readyState ==4){ 
      //whatever 
     } 
    } 
client.send(status); 

我做错了什么?我正在使用基本身份验证。我使用this tool来进行编码,只是把结果,而不是“用户凭据”的一部分。另外,有人可以给我一个OAuth的例子吗?

+0

请让我知道如果我的答案帮助你然后:-) – 2010-03-27 22:42:02

+0

你使用client.setRequestHeader(“Authorization”,“Basic”+ Base64.encode(“user:password”)); ? (冒号很重要...) – Karussell 2010-03-27 22:45:17

回答

1

我已经发布了问题,但由于某种原因,该帖子丢失。没关系,这是发生了什么事情: 我在第一篇文章中给出的代码示例是正确的,但是我在清单文件中犯了一个错误。清单文件包含“权限”部分 - 我需要列出扩展将要使用的所有链接。我忘记列出“http://api.twitter.com”,那就是问题所在。当我添加该链接时,一切都开始工作。感谢您的建议和回复。

0

使用/account/verify_credentials首先检查您的认证,您可能在编码时犯了一些错误,或者密码错误。

+0

我试过你的解决方案 - 我仍然得到403响应代码。要么我不断地使用身份验证头错误,或者其他错误:( – 2010-03-27 23:10:17

0

你也应该能够做到:

client.open("POST","https://screen_name:[email protected]/1/statuses/update.json"); 

,而不是担心改变请求头。