Twitter oAuth callbackUrl-本地主机开发


112

是否还有其他人很难让Twitter的oAuth的回调URL到达他们的本地主机开发环境。显然,它已被禁用。http://code.google.com/p/twitter-api/issues/detail?id=534#c1

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


它通过将twitter回调URL设置为我的真实网站URL对我有用。在localhost-> twitter signup中测试时,重定向到localhost(而不是网站url)。
Sudhakar Krishnan 2016年

Answers:


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 提供Twitter的回调http://localhost:8080


3
这是否可能导致以下错误:远程服务器返回错误:(401)未经授权?
DevDave

没有隧道时,本地主机如何工作?它实际上没有打到您的本地计算机上吗?
杰克·塔克

@JackTuck回调由用户的浏览器而不是Twitter的服务器调用。
蓬松的

25

我上周只需要这样做。显然localhost不起作用,但127.0.0.1Go可以。

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



8

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


我只是尝试这样做,但是它不接受localhost:3000作为URL格式...
David N. Welton

1
是的,它们似乎过滤了此类URL。:(但是,自定义回调URL的支持又回来了-也许在那里得到了支持
。– arikfr

8

回调网址已编辑

http://localhost:8585/logintwitter.aspx

转换成

http://127.0.0.1:8585/logintwitter.aspx

7

这是我的方法:

注册的回调URL: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)。

我希望这有帮助!


7

使用http://smackaho.st

它所做的是与127.0.0.1的简单DNS关联,使您可以绕过localhost或127.0.0.1上的过滤器:

smackaho.st。28800英寸A 127.0.0.1

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

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


6
smackaho.st不再可用tbaggery.com/2010/03/04/smack-a-ho-st.html。请改用lvh.me。它直接进入本地主机。
贾斯汀2012年

5

我在本地主机上使用Twitter回调URL。如果不确定如何创建虚拟主机(这很重要),请使用Ampps。他真的很酷很轻松。在几个步骤中,您将拥有自己的虚拟主机,然后每个URL都可以在其上工作。例如:

  1. 下载并安装ampps

  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重写。

希望这个帮助!干杯。


谢谢你的提示。在Linux上,只需将开发域名添加到/ etc / hosts
jeremyvillalobos 2014年

3

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

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

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

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

直接报价(加强调):

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

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


3

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

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

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

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


2

第180行的TwitterAPIExchange.php上编辑此函数

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


2

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

它将任何路径重定向到所需的localhost域和端口。希望它可以对其他开发人员有用。


极好的资源,但是您的域在URL的末尾添加了“ /”,在某些情况下会导致404。你能解决这个问题吗?例如,它重定向为“ localhost / somename /?<response>,但应为” localhost / somename?<response>
Channa

@Channa我尝试重现此内容,但脚本似乎正常工作。你使用的是什么浏览器?我尝试了Chrome,Safari,Firefox,它的工作原理与预期的一样。
约尔根

Chrome和Firefox都发生这种情况。这是我在您的页面中输入的主机名“ localhost:8080 / dashboard / twitterRedirect.jsp ”,但是当它重定向到“ localhost:8080 / dashboard / twitterRedirect.jsp /… ”时,请注意问题前的“ /”符号标记。它将导致我的应用向我发送404
Channa'Feb

1
@Channa,您不应将整个URL放在主机名字段中。它被称为:主机名,而不是URL ;-)的想法是能够将'localhost'改写为:my.localhost.bla,然后它将使用它代替localhost。在您的情况下,host字段需要为localhost。您的端口设置为8080,并配置重定向去:tolocalhost.com/dashboard/twitterRedirect.jsp这会重定向到:本地主机:8080 /仪表板/ twitterRedirect.jsp
耶尔

2

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

查看网站



1

看起来Twitter现在允许localhost您在Callback URL设置中使用任何内容,只要其中有一个值即可。


1

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

前往下载:cacert.pem文件

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

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

1

这些步骤对我来说很有效,可让Facebook在笔记本电脑上使用本地应用程序:

  • goto 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将不起作用)。
  • 如果您想请求用户的电子邮件地址,请务必输入“隐私政策”和“使用条款” URL
  • 选中同意条款复选框
  • 点击[创建您的Twitter应用]
  • 切换到顶部的[Keys and Access Tokens]标签
  • 将“用户密钥(API密钥)”和“用户密钥(API密钥)”复制到应用程序中的TWITTER_KEY和TWITTER_SECRET
  • 单击“权限”选项卡,然后将其设置为“只读”,“读和写”或“读,写和直接消息”(使用应用程序所需的最少侵入性选项,因为Just和OAuth登录“只读”为足够
  • 如果您希望将用户的电子邮件地址返回到OAuth登录数据中,请在“其他权限”下选中“向用户请求电子邮件地址”复选框(在大多数情况下,请选中“是”)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.