112

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

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

4

17 回答 17

135

备选方案 1。

设置您的 .hosts (Windows) 或 etc/hosts 文件以将活动域指向您的本地主机 IP。如:

127.0.0.1 xyz.com

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

备选方案 2。

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

备选方案 3。

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

于 2009-08-17T18:45:01.580 回答
25

我上周不得不这样做。显然localhost不起作用,但127.0.0.1Go 数字。

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

于 2010-01-04T23:55:08.227 回答
11

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

于 2012-02-25T13:43:53.367 回答
8

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

于 2009-05-03T16:30:49.263 回答
8

回调 URL 已修改

http://localhost:8585/logintwitter.aspx

转换成

http://127.0.0.1:8585/logintwitter.aspx
于 2014-12-29T14:19:56.047 回答
7

使用http://smackaho.st

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

smackaho.st. 28800 在 127.0.0.1

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

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

于 2011-09-20T19:27:19.497 回答
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");

配置设置:

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();
    }

}

网络配置:

<appSettings>

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

</appSettings>

确保将项目的“使用动态端口”属性设置为“假”并输入静态端口号。(我用的是 1066)。

我希望这有帮助!

于 2011-05-09T12:54:30.107 回答
5

我在本地主机上使用 Twitter 回调 url。如果您不确定如何创建虚拟主机(这很重要),请使用 Ampps。他真的很酷很容易。只需几个步骤,您就拥有了自己的虚拟主机,然后每个 url 都可以在上面运行。例如:

  1. 下载并安装amps

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

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

重新启动您的 Ampps,您就可以使用您的回调了。你可以指定任何 url,即使你正在使用一些框架 MVC 或者你有 htaccess url 重写。

希望这有帮助!干杯。

于 2014-01-17T10:04:16.670 回答
3

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

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

简短回答:一旦正确设置,您可以在设置 Twitter 应用程序时简单地将此 url ( http://example.dev ) 视为实时(而不是本地)。

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

直接报价(强调):

您可以在应用程序详细信息页面上提供具有我们识别的域名的任何有效 URL。OAuth 1.0a 要求您在流程的请求令牌步骤中发送 oauth_callback 值,我们将在该步骤中接受基于动态 locahost 的回调

这对我来说就像一个魅力。希望这可以帮助。

于 2013-05-22T22:03:16.717 回答
3

使用Fiddler可以非常方便地完成它:

  • 打开菜单工具 > 主机...
  • 插入一行127.0.0.1 your-production-domain.com,确保选中“启用请求重新映射...”。别忘了按Save
  • 如果需要访问您的真实生产服务器,只需退出 Fiddler 或禁用重新映射。
  • 再次启动 Fiddler 将打开重新映射(如果已选中)。

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

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

于 2014-08-12T21:34:41.870 回答
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; }
}
于 2013-09-11T06:56:13.700 回答
2

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

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

于 2017-12-01T15:41:41.360 回答
2

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

网站

于 2018-07-27T17:09:36.367 回答
1

在 twitter 应用程序中设置 callbackurl:127.0.0.1:3000 并将 WEBrick 设置为绑定 127.0.0.1 而不是 0.0.0.0

命令:rails s -b 127.0.0.1

于 2013-01-15T18:26:12.853 回答
1

看起来 Twitter 现在允许localhostCallback URL设置中的任何内容一起使用,只要那里有一个值。

于 2014-11-21T07:07:56.853 回答
1

我为此苦苦挣扎并遵循了十几个解决方案,最后我所要做的就是使用本地主机上的任何 ssl api:

去下载:cacert.pem 文件

php.ini* 中取消注释并更改: curl.cainfo = "c:/wamp/bin/php/php5.5.12/cacert.pem"

  • 您可以通过在 CLI 中运行来找到php.ini文件在计算机上的位置php --ini
  • 为方便起见,我将 cacert.pem 放在与 php.ini 相同的目录中。
于 2015-08-14T09:14:48.383 回答
1

这些是让 Facebook 在我的笔记本电脑上使用本地应用程序工作的步骤:

  • 转到apps.twitter.com
  • 输入名称、应用程序描述和您的站点 URL 注意:对于 localhost:8000,请使用 127.0.0.1:8000,因为前者不起作用
  • 输入与您的应用程序 TWITTER_REDIRECT_URI 中定义的回调 URL 匹配的回调 URL 注意:例如:http: //127.0.0.1/login/twitter/callback(localhost 将不起作用)。
  • 如果您希望请求用户的电子邮件地址,请务必输入“隐私政策”和“使用条款”网址
  • 选中同意条款复选框
  • 单击 [创建您的 Twitter 应用程序]
  • 切换到顶部的 [Keys and Access Tokens] 选项卡
  • 将“Consumer Key(API Key)”和“Consumer Secret(API Secret)”复制到您的应用程序中的TWITTER_KEY和TWITTER_SECRET
  • 单击“权限”选项卡并适当设置为“只读”、“读写”或“读、写和直接消息”(使用您的应用程序所需的侵入性最小的选项,因为 OAuth 登录“只读”是充足的
  • 如果您希望将用户的电子邮件地址返回到 OAuth 登录数据中,请在“附加权限”下选中“向用户请求电子邮件地址”复选框(在大多数情况下选中是)
于 2017-09-13T20:39:56.140 回答