Twitter oAuth callbackUrl-localhost 开发

是否有其他人在使用 TwitteroAuth 的回调 URL 访问本地主机开发环境时遇到困难。 显然最近它已经被禁用了。 < a href = “ http://code.google.com/p/twitter-api/questions/Details? id = 534 # c1”rel = “ noReferrer”> http://code.google.com/p/twitter-api/issues/detail?id=534#c1

有人有变通方法吗? 我不想停止我的发展

91735 次浏览

是的,它被禁用是因为最近在 OAuth 中发现的安全问题。现在唯一的解决方案是创建两个 OAuth 应用程序——一个用于生产,一个用于开发。在开发应用程序中,您设置了本地主机回调 URL,而不是活动 URL。

Alternative 1.

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

127.0.0.1 xyz.example

其中 xyz.example是您真正的域。

选择2。

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

选择3。

Furthermore, it seems that it works to provide for example http://127.0.0.1:8080 as callback to Twitter, instead of http://localhost:8080.

我上周刚刚做过这个。显然,localhost不工作,但 127.0.0.1不去图。

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

我是这么做的:

Registered Callback 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");

配置设置:

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>

确保将项目的属性“ use Dynamic ports”设置为“ false”,并输入一个静态端口号。(我用的是1066)。

希望这个能帮上忙!

使用 http://smackaho.st

它所做的是一个简单的 DNS 关联到127.0.0.1,它允许你绕过本地主机或127.0.0.1上的过滤器:

Smackaho.st. 28800 IN A 127.0.0.1

所以如果你点击这个链接,它会显示你在本地网络服务器上的内容(如果你没有网络服务器,你会得到一个404)。当然,你可以将它设置为任何你想要的页面/端口:

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

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

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

命令: ails s-b 127.0.0.1

当我进行本地开发时,我总是设置一个本地托管的开发人员名称,以反映我正在进行的项目。我通过 xamppapacheconf 额外的 httpd-vhosts 在 xampp 中设置了这个。然后还在 WindowsSystem32驱动程序等主机。

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

简短的回答: 一旦正确地设置了这个地址,您就可以简单地将这个 url (http://example.dev)视为活动的(而不是本地的) ,就像您设置您的 Twitter 应用程序一样。

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

直接引语(加重语气) :

您可以提供任何有效的 URL,其中包含我们在 应用程序详细信息页面。 OAuth 1.0 a 要求您发送一个 流的请求标记步骤上的 oauth _ callback 值,并且 < em > we‘ ll accept a 基于本地主机的动态回调 on that step.

这招对我很管用,希望能有帮助。

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

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

  1. 下载并安装扩音器

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

  3. 我正在使用 Win,所以请转到你的主机文件-> C: Windows System32 Drivers etc 主机,并添加行: 127.0.0.1 twitter.local

重新启动您的 Ampps,您可以使用回调。您可以指定任何 URL,即使您正在使用一些框架 MVC 或您有 htaccess 网址重写。

希望这个帮助! 干杯。

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

  • 打开菜单 Tools > HOSTS...
  • 插入像 127.0.0.1 your-production-domain.com这样的行,确保勾选“ Enable remap of request...”。不要忘记按 Save
  • 如果需要访问实际的生产服务器,只需退出 Fiddler 或禁用重新映射。
  • 再次启动 Fiddler 将打开重新映射(如果选中)。

A pleasant bonus is that you can specify a custom port, like this: 127.0.0.1:3000 your-production-domain.com(不可能通过主机文件实现这一点)。此外,您可以使用任何域名(例如 localhost)来代替 IP。

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

看起来 Twitter 现在允许 localhost和你在 Callback URL设置中的任何东西放在一起,只要那里有一个值。

已编辑回调 URL

http://localhost:8585/logintwitter.aspx

转换为

http://127.0.0.1:8585/logintwitter.aspx

我纠结于这个问题,并遵循了十几种解决方案,最后,要在本地主机上使用任何 ssl apis,我所要做的就是:

下载: Pem 文件

php.ini * 中,取消评论和修改: Cainfo = “ c:/wamp/bin/php/php5.5.12/ccert.pem”

  • You can find where your php.ini file is on your machine by running php --ini in your CLI
  • 为了方便起见,我将 ccert.pem 放在与 php.ini 相同的目录中。

这些步骤对我来说非常有效,让 Facebook 在我的笔记本电脑上使用一个本地应用程序:

  • 转到 apps.twitter.com
  • enter the name, app description and your site URL 注意: 对于 localhost:8000,使用 127.0.0.1:8000,因为前者不起作用
  • 输入与应用程序 TWITTER _ REDIRECT _ URI 中定义的回调 URL 相匹配的回调 URL 注意: 例如: http://127.0.0.1/login/twitter/callback(本地主机不工作)。
  • Important enter both the "privacy policy" and "terms of use" URLs if you wish to request the user's email address
  • 选中同意条款复选框
  • click [Create Your Twitter Application]
  • switch to the [Keys and Access Tokens] tab at the top
  • 将“用户密钥(API 密钥)”和“用户秘密(API 秘密)”复制到你的应用程序中的 TWITTER _ KEY 和 TWITTER _ Secret
  • click the "Permissions" tab and set appropriately to "read only", "read and write" or "read, write and direct message" (use the least intrusive option needed for your application, for just and OAuth login "read only" is sufficient
  • 如果您希望将用户的电子邮件地址返回到 OAuth 登录数据(在大多数情况下选择 yes) ,请在“其他权限”下选中“请求用户电子邮件地址”复选框

我遇到了同样的问题,我不能给 localhost 一个有效的回调 URL。所以我创建了一个简单的域名来帮助我们的开发者: Https://tolocalhost.com

它将重定向到您所需的本地主机域和端口的任何路径。希望对其他开发人员有所帮助。

Seems nowadays http://127.0.0.1 also stopped working. 一个简单的解决方案是使用 http://localtest.me而不是 http://localhost,它总是指向 127.0.0.1,你甚至可以添加任意的子域到它,它仍然指向 127.0.0.1

See 网站