Twitter oAuth callbackUrl - localhost开发

时间:2009-04-29 04:04:29

标签: twitter oauth

是否有其他人很难获得Twitters oAuth的回调网址来访问他们的localhost开发环境。 显然它最近被禁用了。 http://code.google.com/p/twitter-api/issues/detail?id=534#c1

有没有人有解决方法。我真的不想停止我的发展

17 个答案:

答案 0 :(得分:133)

备选方案1。

设置.hosts(Windows)或etc / hosts文件,将实时域指向localhost IP。如:

  

127.0.0.1 xyz.com

其中xyz.com是您的真实域名。

备选方案2。

此外,本文还给出了提示,或者使用URL缩短服务。缩短您的本地URL并将结果作为回调提供。

备选方案3。

此外,它似乎可以提供例如http://127.0.0.1:8080作为Twitter的回调,而不是http://localhost:8080

答案 1 :(得分:27)

我上周必须这样做。显然localhost不起作用,但127.0.0.1确实如此。

这当然假设您在Twitter上注册了两个应用程序,一个用于您的实时www.mysite.com,另一个用于127.0.0.1

答案 2 :(得分:10)

只需将http://127.0.0.1:xxxx/作为回调网址,其中xxxx是您框架的端口

答案 3 :(得分:8)

编辑回调网址

http://localhost:8585/logintwitter.aspx

转换为

http://127.0.0.1:8585/logintwitter.aspx

答案 4 :(得分:7)

我就这样做了:

已注册的回拨网址: http://127.0.0.1/Callback.aspx

   OAuthTokenResponse authorizationTokens = 
        OAuthUtility.GetRequestToken(ConfigSettings.getConsumerKey(), 
                                     ConfigSettings.getConsumerSecret(), 
                                     "http://127.0.0.1:1066/Twitter/Callback.aspx");

ConfigSettings:

public static class ConfigSettings
{
    public static String getConsumerKey()
    {
        return System.Configuration.ConfigurationManager.AppSettings["ConsumerKey"].ToString();
    }

    public static String getConsumerSecret()
    {
        return System.Configuration.ConfigurationManager.AppSettings["ConsumerSecret"].ToString();
    }

}

的Web.config:

<appSettings>

    <add key="ConsumerKey" value="xxxxxxxxxxxxxxxxxxxx"/>
    <add key="ConsumerSecret" value="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"/>

</appSettings>

确保将项目的属性“使用动态端口”设置为“false”,然后输入静态端口号。 (我使用了1066)。

我希望这有帮助!

答案 5 :(得分:7)

使用http://smackaho.st

它的作用是与127.0.0.1的简单DNS关联,它允许您绕过localhost或127.0.0.1上的过滤器:

  

smackaho.st。 28800 IN A 127.0.0.1

因此,如果您点击该链接,它将显示您在本地网络服务器上的内容(如果您没有,则会获得404)。您当然可以将其设置为您想要的任何页面/端口:

http://smackaho.st:54878/twitter/callback

答案 6 :(得分:7)

是的,由于最近在OAuth中发现的安全问题,它已被禁用。目前唯一的解决方案是创建两个OAuth应用程序 - 一个用于生产,一个用于开发。在开发应用程序中,您可以设置localhost回调URL而不是实时URL。

答案 7 :(得分:5)

我正在使用我的localhost上的Twitter回调网址。如果您不确定如何创建虚拟主机(这很重要),请使用Ampps。他真的很酷很容易。在几个步骤中,您拥有自己的虚拟主机,然后每个URL都可以使用它。例如:

  1. 下载并安装ampps

  2. 添加新域名。 (这里你可以设置例如twitter.local),这意味着你的虚拟主机将是http://twitter.local,它将在第3步之后运行。

  3. 我正在开发Win,所以请转到主机文件 - &gt; C:\ Windows \ System32 \ Drivers \ etc \ hosts并添加行:127.0.0.1 twitter.local

  4. 重新启动你的Ampps,你可以使用你的回调。你可以指定任何url,即使你正在使用某个框架MVC或你有htaccess url重写。

    希望这个帮助! 欢呼声。

答案 8 :(得分:3)

当我在本地开发时,我总是设置一个本地托管的开发名称,它反映了我正在进行的项目。我在xampp中通过xampp \ apache \ conf \ extra \ httpd-vhosts.conf然后在\ Windows \ System32 \ drivers \ etc \ hosts中设置了它。

因此,如果我为example.com设置本地开发站点,我会在这两个文件中将其设置为example.dev。

简答:一旦设置正确,您可以在设置Twitter应用时将此网址(http://example.dev)视为实时(而非本地)

这里给出了类似的答案:https://dev.twitter.com/discussions/5749

直接引用(强调添加):

  

您可以提供任何有效的网址,其中包含我们在网站上识别的域名   申请详情页面。 OAuth 1.0a要求您发送   oauth_callback值在流的请求令牌步骤和我们将   在该步骤上接受动态的基于locahost的回调

这对我来说就像一个魅力。希望这会有所帮助。

答案 9 :(得分:3)

使用Fiddler

可以非常方便地完成
  • 打开菜单工具&gt; HOSTS ...
  • 插入127.0.0.1 your-production-domain.com之类的行,确保选中“启用重新映射请求...”。不要忘记按 保存
  • 如果需要访问您的真实生产服务器,只需退出Fiddler或禁用重新映射。
  • 再次启动Fiddler将启用重新映射(如果已选中)。

一个令人愉快的好处是你可以指定一个自定义端口,如下所示: 127.0.0.1:3000 your-production-domain.com(通过hosts文件实现这一点是不可能的)。此外,您可以使用任何域名(例如localhost)代替IP。

这样,可以(但不是必须)只注册一次您的Twitter应用程序(假设您不介意使用相同的密钥进行本地开发和生产)。

答案 10 :(得分:2)

如今http://127.0.0.1似乎也停止了工作。 一个简单的解决方案是使用http://localtest.me而不是http://localhost,它总是指向127.0.0.1,甚至可以向其中添加任意子域,它仍然指向127.0.0.1

请参见Website

答案 11 :(得分:2)

我遇到了同样的挑战,我无法将localhost作为有效的回调网址。所以我创建了一个简单的域来帮助开发人员: https://tolocalhost.com

它会将任何路径重定向到您需要的localhost域和端口。希望它对其他开发者有用。

答案 12 :(得分:2)

TwitterAPIExchange.php #180

<编辑此功能
public function performRequest($return = true)
{
    if (!is_bool($return)) 
    { 
        throw new Exception('performRequest parameter must be true or false'); 
    }

    $header = array($this->buildAuthorizationHeader($this->oauth), 'Expect:');

    $getfield = $this->getGetfield();
    $postfields = $this->getPostfields();

    $options = array( 
        CURLOPT_HTTPHEADER => $header,
        CURLOPT_HEADER => false,
        CURLOPT_URL => $this->url,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_SSL_VERIFYPEER => false,
        CURLOPT_SSL_VERIFYHOST => false
    );

    if (!is_null($postfields))
    {
        $options[CURLOPT_POSTFIELDS] = $postfields;
    }
    else
    {
        if ($getfield !== '')
        {
            $options[CURLOPT_URL] .= $getfield;
        }
    }

    $feed = curl_init();
    curl_setopt_array($feed, $options);
    $json = curl_exec($feed);
    curl_close($feed);

    if ($return) { return $json; }
}

答案 13 :(得分:1)

看起来Twitter现在允许localhost以及Callback URL设置中的任何内容,只要那里有值。

答案 14 :(得分:1)

我为此努力并遵循了十几个解决方案,最后我必须做的就是在本地主机上使用任何ssl apis:

下载:cacert.pem file

php.ini *取消评论和更改: curl.cainfo = "c:/wamp/bin/php/php5.5.12/cacert.pem"

  • 您可以通过在CLI中运行php.ini来查找计算机上php --ini文件的位置
  • 我将我的cacert.pem放在与php.ini相同的目录中以方便。

答案 15 :(得分:1)

这些步骤让我能够让Facebook在笔记本电脑上使用本地应用程序:

  • 转到apps.twitter.com
  • 输入名称,应用说明和您的网站网址 注意:对于localhost:8000,使用127.0.0.1:8000,因为前者不起作用
  • 输入与您的应用程序的TWITTER_REDIRECT_URI中定义的回调网址匹配的回调网址 注意:例如:http://127.0.0.1/login/twitter/callback(localhost不起作用)。
  • 重要同时输入&#34;隐私政策&#34;和&#34;使用条款&#34;如果您想要请求用户的电子邮件地址,请使用网址
  • 选中同意条款复选框
  • 点击[创建您的Twitter应用程序]
  • 切换到顶部的
  • 复制&#34;消费者密钥(API密钥)&#34;和消费者秘密(API Secret)&#34;应用程序中的TWITTER_KEY和TWITTER_SECRET
  • 点击&#34;权限&#34;选项卡并适当设置为&#34;只读&#34;,&#34;读写&#34;或者&#34;读取,写入和指导消息&#34; (使用您的应用程序所需的最少侵入性选项,仅用于OAuth登录&#34;只读&#34;就足够了
  • &#34;额外权限&#34;检查&#34;请求用户的电子邮件地址&#34;复选框,如果您希望将用户的电子邮件地址返回到OAuth登录数据(在大多数情况下,请检查是)

答案 16 :(得分:1)

在twitter app中设置callbackurl:127.0.0.1:3000 并将WEBrick设置为绑定在127.0.0.1而不是0.0.0.0

命令:rails s -b 127.0.0.1