【问题标题】:Twitter O-Auth Callback urlTwitter O-Auth 回调网址
【发布时间】:2010-12-02 01:50:26
【问题描述】:

我在使用 Twitter 的 oauth 身份验证和使用回调 URL 时遇到问题。

我正在使用 php 编码并使用 twitter wiki http://github.com/abraham/twitteroauth 引用的示例代码

我得到了那个代码,并尝试了一个简单的测试,它运行良好。但是我想以编程方式指定回调 url,示例不支持。

所以我很快修改了getRequestToken()方法来接受一个参数,现在它看起来像这样:

function getRequestToken($params = array()) {
  $r = $this->oAuthRequest($this->requestTokenURL(), $params);
  $token = $this->oAuthParseResponse($r);
  $this->token = new OAuthConsumer($token['oauth_token'], $token['oauth_token_secret']);
  return $token;
}

我的电话看起来像这样

$tok = $to->getRequestToken(array('oauth_callback' => 'http://127.0.0.1/twitter_prompt/index.php'));

这是我所做的唯一更改,重定向就像一个魅力,但是当我尝试使用我新授予的访问权限来尝试拨打电话时出现错误。我收到“无法对您进行身份验证”错误。此外,该应用程序从未真正添加到用户授权连接中。

现在我阅读了规范,我认为我所要做的就是在获取请求令牌时指定参数。在 oauth 和 twitter 方面经验更丰富的人可以帮帮我吗?谢谢你

【问题讨论】:

    标签: twitter oauth


    【解决方案1】:

    我认为 twitter 现在已经解决了这个问题,或者您可能错过了在您的应用程序设置中提供默认回调 url,这是动态回调 url 像上面其他人提到的那样工作所必需的。

    无论如何,我通过在检索请求令牌时传递 oath_callback 参数来实现此功能。我正在使用twitter-async PHP 库,并且必须进行一些小调整以使库通过回调 url。

    如果您使用的是 twitter-async,则更改如下:

    修改getRequestToken和getAuthenticateURL函数以回调url为参数

     public function getRequestToken($callback_url = null)
      {
        $params = empty($callback_url) ? null : array('oauth_callback'=>$callback_url);
        $resp = $this->httpRequest('GET', $this->requestTokenUrl, $params);
        return new EpiOAuthResponse($resp);
      }
    
    
     public function getAuthenticateUrl($callback_url = null)
      { 
        $token = $this->getRequestToken($callback_url);
        return $this->authenticateUrl . '?oauth_token=' . $token->oauth_token;
      }
    

    并从您的 PHP 代码中传递回调 url。

    $twitterObj->getAuthenticateUrl('http://localhost/twitter/confirm.php');
    

    【讨论】:

    • 干杯 - 这正是我需要的修改。
    • 对于任何感兴趣的人,这现在是 twitter-async 的一部分
    【解决方案2】:

    @Ian,twitter 现在允许 127.0.0.1 并且最近进行了一些其他更改。

    @jtymann,在这里查看我的答案,看看是否有帮助

    Twitter oauth_callback parameter being ignored!

    GL

    叮当声

    【讨论】:

      【解决方案3】:

      即使是我也遇到 401 错误.. 但它已解决.. 在将您的应用程序注册到 twitter 期间,您需要提供回调 url... 喜欢http://localhost:8080

      我已经使用 java 完成了这个... 所以我的代码是: String CallbackURL="http://localhost:8080/tweetproj/index.jsp"; provider.retrieveRequestToken(consumer,CallbackURL);

      其中 tweetproj 是我的项目名称 而 index.jsp 只是一个 jsp 页面...

      希望对你有所帮助...

      【讨论】:

        【解决方案4】:

        用户在 twitter.com 上授权应用程序并返回到您的回调 URL 后,您必须将请求令牌交换为访问令牌。

        【讨论】:

          【解决方案5】:

          Twitter 不支持 oauth_callback 参数,只会使用注册应用程序设置中指定的参数。

          它也不允许在该回调中使用 127.0.0.1 或 localhost 名称,因此我设置了http://dev.twipler.com,它是在 DNS 中为 127.0.0.1 设置的,因此您可以安全使用;

          http://dev.twipler.com/twitter_prompt/index.php
          

          【讨论】:

          猜你喜欢
          • 2018-11-09
          • 1970-01-01
          • 1970-01-01
          • 2010-12-07
          • 2013-08-24
          • 1970-01-01
          • 1970-01-01
          • 2013-11-01
          • 1970-01-01
          相关资源
          最近更新 更多