2010-09-07 197 views
5

开发我在Twitter上注册的Web应用程序。在这个应用程序中,我可能有10个不同的Twitter标识,我想要允许或拒绝应用程序访问。使用Twitter oAuth授权,您如何指定twitter用户名?

例如:

https://api.twitter.com/oauth/authorize?oauth_token=XXXXXXXXXXXXXXXXXXXXXXXX&oauth_callback=http:://localhost:24649/TwitterIdentity/GetTwitterAuthorizationCallback/

它永远只是默认为不管我的Twitter帐户的登录身份,我必须指定注销,然后签入新的账户。它几乎就像我需要一个额外的查询参数如

https://api.twitter.com/oauth/authorize?oauth_token=XXXXXXXXXXXXXXXXXXXXXXXX&oauth_callback=http:://localhost:24649/TwitterIdentity/GetTwitterAuthorizationCallback/& ForUsername =比尔·盖茨

回答

1

注意,在授权的一般范围,授权代理人不一定知道它代表用户的身份它的行为。换句话说,可能会有一个实现,您的应用可以被授权阅读Twitter的更新流,但仍然不知道该流属于哪个标识。在这种情况下,添加您要求的参数将是信息泄露,因为您的应用程序需要系统设计不提供的一条信息。

或者把它放在一个现实生活的例子中 - 设想一个代客泊车,在那里不是给你一张停车票和拿钥匙到车上,代客会问你的SSN只是为了停车,只是因为代客也为别人停车。

+0

我想知道如何在登录授权页面时登出会话。看起来这在技术上不可行。感谢您的解释。 – Shane 2010-09-08 11:42:25

+0

一旦你的应用程序被授权,你很可能可以从Twitter API获取身份。所以,你可以保持授权令牌和身份的关联。你不能请求特定身份的授权。 – 2010-09-08 16:24:45

+0

这就是我最终做的。我有一张表,我在授权期间存储请求令牌,然后在回调时,我通过该请求令牌进行匹配。所以我会知道用户。再次感谢。 – Shane 2010-09-09 12:15:13

3

其实,你可以在一个额外的参数传递与回调URL,就像这样:

https://api.twitter.com/oauth/authorize?oauth_token=XXX&oauth_callback=http:://localhost:24649/TwitterIdentity/GetTwitterAuthorizationCallback?ForUsername=billgates 

和参数将被送回给你当Twitter的调用返回的URL,就像这样:

http:://localhost:24649/TwitterIdentity/GetTwitterAuthorizationCallback?ForUsername=billgates&oauth_token=XXX&access_token=YYY 

您可以在文档中阅读更多关于这一点 - http://dev.twitter.com/pages/auth

始终使用显式oauth_callback - 建议您指定客户端 记录默认OAuth的回调,但明确声明对每个请求令牌 您 oauth_callback读取请求您的应用程序进行。 通过动态地设置您的 oauth_callback,你可以传回 您的应用程序 额外的状态信息和最佳控制 经验。