我的应用程序的Twitter API授权

6
我正在使用这个Twitter API库,目前一切都很好。我的问题(其实不是问题而是用户体验)是每次想要用Twitter登录时都需要打开一个弹出窗口。
现在的流程如下: - 用户点击我的页面上的Twitter登录标志。 - 弹出JavaScript引导的弹出窗口,显示Twitter OAuth相关内容。如果您已经登录,则只显示“登录”和“取消”。如果没有登录,则显示登录字段。 - 如果一切正常,它会转到我提供的回调URL。做了一堆事情然后... - 我调用window.opener并传递已认证的信息,然后关闭窗口。
这个实现起来非常简单,效果也很好。我想知道Twitter登录过程是否可以更像Facebook的流程,具体如下:
- 用户点击我的页面上的Twitter登录标志。 - 如果用户已经登录并授权应用程序,则弹出窗口将立即弹出并将用户数据返回给我的页面。
我确实意识到我正在使用PHP库进行Twitter登录,而Facebook的流程是从JavaScript端完成的,但我想知道是否可以通过PHP检测用户是否已经允许应用程序并登录,以便为他们跳过额外的登录/取消点击步骤。
2个回答

3

尝试使用“使用Twitter登录”流程。如果用户已经进行了身份验证,则只需单击一次即可完成操作。上面链接的文档中有一个流程图和过程描述,但我也会在这里列出步骤(加粗强调),并链接相关的API页面:

“使用 Twitter 登录”是一种认证模式,允许用户通过一次点击将其 Twitter 账户与第三方服务连接。它利用 OAuth 进行身份验证,尽管流程非常相似,但授权 URL 和工作流稍有不同,如下所述。
正常的流程规定应用程序将请求令牌发送到 Twitter 的 OAuth 规范实现中的 oauth/authorize。为了利用“使用 Twitter 登录”,应用程序应该将收到的请求令牌发送到 oauth/authenticate 中的oauth_token参数。
根据用户的状态和他们与调用应用程序的先前交互方式,oauth/authenticate 方法会以不同的方式进行操作:
1. 如果用户已经登录到 twitter.com 并且已经批准了调用应用程序,则用户将立即被认证并返回回调 URL。 2. 如果用户没有登录到 twitter.com 并且已经批准了调用应用程序,则用户将被提示登录到 twitter.com,然后立即被认证并返回回调 URL。 3. 如果用户已经登录到 twitter.com 并且尚未批准调用应用程序,则会出现 OAuth 授权提示。授权用户将被重定向到回调 URL。 4. 如果用户没有登录到 twitter.com 并且尚未批准调用应用程序,则用户将被提示登录到 twitter.com,然后出现授权提示,最后重定向回调 URL。
希望这符合您的要求,能够为您起到作用。

是的,我记得读过这个,但当时我更专注于寻找一个开箱即用的解决方案。我会回去再看一下,因为它听起来像是我正在寻找的东西。我会告诉你进展如何,并可能发布一个解决方案。谢谢。 - locrizak

0

我曾经遇到过Facebook API的同样问题,但通过检查API生成的cookie,看看是否有条目可以提示用户是否已登录,最终解决了这个问题。我不确定Twitter是否也是如此,但在Facebook的情况下,仅存在cookie就意味着用户已经登录了当前应用程序。由于它们都使用Auth,它们可能使用相同的过程。但当然,我只是猜测。最好自己去确认一下。

顺便说一句,这是一个很棒的问题。+1


是的,我明白你的意思。但就像Facebook一样,Twitter的文档也很少。我尝试了几个库,发现我正在使用的是最好的(从我找到的资料来看),并且有一些文档可供参考。只是让我感到困扰的是,开箱即用的脚本需要用户多做一两次点击。在完美的世界里,我希望全球最大的社交媒体公司或任何产品公司都能发布至少与其他文档相当/半过得去的文档。 - locrizak

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