使用 Twitter oAuth 授权,如何指定 Twitter 用户名?

5

我正在开发一个已注册在 Twitter 上的 Web 应用程序。在这个应用程序中,我可能有10个不同的 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=billgates

2个回答

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,您可以将额外的状态信息传递回应用程序并控制最佳体验。


1
请注意,在授权的一般范围内,授权代理不一定知道其代表的用户的身份。换句话说,可能存在这样的实现方式:您的应用程序可以被授权读取 Twitter 更新流,但仍然不知道该流属于哪个身份。在这种情况下,添加您要求的参数将是信息披露,因为您的应用程序将需要系统设计不提供的一些信息。
或者用一个现实生活中的例子来说明——想象一下代客泊车,代替给您停车票并拿走汽车钥匙,代客会要求您提供社会安全号码只是为了停车,只是因为代客也为其他人停车。

我正在尝试弄清楚在访问授权页面时如何从会话中获取登录信息。看起来这在技术上是不可能的。感谢您的解释。 - Shane
一旦您的应用程序被授权,您很可能可以从Twitter API获取身份。因此,您可以保留授权令牌和身份的关联。但是,您无法为特定身份请求授权。 - Franci Penov
那就是我最终做的事情。我有一个表,在授权期间将请求令牌存储在其中,然后在回调时通过该请求令牌进行匹配。这样我就能知道用户了。再次感谢。 - Shane

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接