【问题标题】:How do I get the ID of the currently authenticated Twitter user in a web application without using OAuth?如何在不使用 OAuth 的情况下在 Web 应用程序中获取当前经过身份验证的 Twitter 用户的 ID?
【发布时间】:2016-03-02 19:42:15
【问题描述】:

*为长期背景提前道歉,但我认为一旦得到回答,这对其他开发人员来说是必要且有帮助的。

背景

我正在构建一个非常社交的网络应用程序,其中有几个触发社交操作的事件,例如更新用户的 Twitter 状态。

目前,我使用一个名为“TweetMoaSharp”(.NET)的库来处理触发状态更新或跟随操作的 Oauth 工作流和事件,只要用户被短暂重定向到 Twitter 身份验证页面.

为了澄清,每次都不会要求用户重新授权我的应用程序,但是当用户被引导到 Twitter 然后返回到我的应用程序时,会出现持续 1-2 秒的难看闪烁。这会惹恼最终用户,因为 Twitter 交互频繁。

所以——为了缓解这种情况,我使用 TweetMoaSharp 通过服务器获取 OAuth 访问令牌,然后将该令牌与从 Twitter 返回的用户 ID 一起存储在我的数据库中。然后我在客户端上设置了一个包含用户 Twitter Id 的 cookie,这样对于未来的请求,我可以简单地将该 ID 传递给服务器,从数据库中获取 OAuth 令牌并开展我的业务。无需重定向!

问题解决了,对吗?

嗯,不。愚蠢的是,我忽略了这样一个事实,即这可能会导致与在同一页面上使用的多个 Twitter 帐户发生冲突,并最终将测试推文发送到我拥有的第二个 Twitter 帐户,因为我更改了 Twitter 会话。这可能发生在从同一浏览器访问多个 Twitter 帐户的任何用户身上;比如夫妻。

回到绘图板

我心想,“Facebook JavaScript API”让获取当前登录用户的 id 变得超级容易,而无需经过一堆服务器端令牌步骤,所以我确信 Twitter 提供了相同的方法。”哈!我还没找到。

底线/问题

如何获取当前已通过身份验证的 Twitter 用户的 ID,而无需将他们重定向到 Twitter(即使只是一秒钟)?如果我能做到这一点,那么我可以将返回的 ID 与我的 cookie 中的 ID 进行比较,并知道它是否对我的应用程序的当前会话有效,或者我是否需要让该(新)用户进行身份验证以避免“推文" 在错误的帐户下。

提前致谢。

【问题讨论】:

标签: twitter oauth twitter-oauth tweetsharp


【解决方案1】:

使用您的应用令牌执行verify credentials call

https://api.twitter.com/1.1/account/verify_credentials.json

返回的信息是登录用户。

很遗憾,每 15 分钟窗口只能调用 15 次!

【讨论】:

    猜你喜欢
    • 2019-03-13
    • 1970-01-01
    • 1970-01-01
    • 2013-04-23
    • 1970-01-01
    • 2017-08-15
    • 1970-01-01
    • 1970-01-01
    • 2017-06-06
    相关资源
    最近更新 更多