【问题标题】:With Twitter oAuth authorization, how do you specify what twitter username?使用 Twitter oAuth 授权,如何指定 Twitter 用户名?
【发布时间】:2011-04-09 09:15:42
【问题描述】:

开发一个我在 Twitter 上注册的网络应用程序。在这个应用程序中,我可能有 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

【问题讨论】:

    标签: oauth twitter


    【解决方案1】:

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

    或者用现实生活中的例子来举例 - 想象一下代客泊车,代客泊车不会给您停车票并拿走车钥匙,而是会要求您提供 SSN 来停车,只是因为代客泊车也为其他人停车。

    【讨论】:

    • 我试图弄清楚如何在访问授权页面时退出会话。这似乎在技术上是不可能的。谢谢你的解释。
    • 一旦您的应用获得授权,您很可能可以从 Twitter API 获取身份。因此,您可以保持授权令牌和身份的关联。您只是不能为特定身份请求授权。
    • 这就是我最终要做的。我有一个表,我在授权期间存储请求令牌,然后在回调时,我通过该请求令牌匹配它。所以我会知道用户。再次感谢。
    【解决方案2】:

    其实你可以在回调url中传入一个额外的参数,像这样:

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

    当推特调用返回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,可以通过 附加状态信息返回 您的应用程序并控制 体验最好。

    【讨论】:

      猜你喜欢
      • 2015-09-16
      • 2014-12-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-21
      • 2012-04-08
      • 1970-01-01
      • 2013-03-14
      • 2020-10-06
      相关资源
      最近更新 更多