【发布时间】: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 开发者论坛twittercommunity.com 上找到更多帮助
标签: twitter oauth twitter-oauth tweetsharp