oAuth和twitter通过REST API

时间:2016-07-13 19:22:23

标签: rest twitter oauth

我有一个公共应用程序想要从私人Twitter用户的帐户发布。

一个完美的例子是:http://www.usabchallenge.com/

在上面的示例中,您选择了5个玩家,然后单击下面的Twitter按钮,它将带您进入https://api.twitter.com/oauth/authorize?oauth_token=YOUR_TOKEN屏幕。

从阅读Twitter文档 - 我似乎想要用Twitter按钮"登录"这将授予我访问其帐户的权限,当我有权访问时,我将能够代表他们发帖。

我对这个过程的流程感到困惑。我可以在Twitter的文档中阅读它,但我没有连接点。

引自Twitter的浏览器登录流程页面。我编写了便于阅读的步骤。

1. The application renders a “Sign in with Twitter” link or button.
2. The user clicks the sign in button.
3. The current web browser is redirected to Twitter (or a new browser is opened and directed to Twitter).
4. The user completes a login and authorization step at Twitter if needed.
5. Twitter redirects back to an URL under the application’s control, passing authorization information for the user.

步骤1和2是不言自明的。

步骤3 - 我是否在按钮本身上设置了href属性或操作?我如何进入此页面?

第4步是用户点击该api.twitter页面上的按钮,其中显示Authorize YOUR_APPLICATION to use your account?

第5步是您在oauth_callback api电话中提供的oauth/request_token参数。

所以我的两个问题是:

如何从登录按钮将某人引导至https://api.twitter.com/oauth/authorize?oauth_token=YOUR_TOKEN屏幕? HREF?行动?是否有按钮的默认代码?

此外,我在哪里进行此oauth/request_token调用以提供回调以使我进入第5步?一旦用户点击登录按钮就会被请求,这是有道理的,但与此相矛盾的是,登录按钮将用户带到https://api.twitter.com/oauth/authorize?oauth_token=YOUR_TOKEN,而不是我可以拨打电话的地方REST API。

为了它的价值 - 我一直在使用this link(以及文档中的许多其他页面)作为参考。

我正在使用codebird连接到他们一直运行良好的REST API。

1 个答案:

答案 0 :(得分:2)

第3步:将您的用户重定向到Twitter的这部分代码:

// redirect to auth website
  $auth_url = $cb->oauth_authorize();
  header('Location: ' . $auth_url);
  die();

我不知道你使用PHP的是什么,但是如果你有模板,你可以传递$ auth_url参数来在你的href中显示它,而不是改变你当前页面的位置。您还可以创建一个对您返回此URL的函数的ajax调用。 (我亲自制作了一个弹出窗口)

第4步:完全

第5步:我将代码的第二部分分隔在一个文件' callback.php' (我在Twitter中定义的回调网址指向此文件)这样我可以正确处理错误和重定向。 在这里定义它:

$reply = $cb->oauth_requestToken(['oauth_callback' => 'http://' .$_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] ]);