Twitter oAuth callbackUrl – localhost开发
难道有其他人难以让Twitters oAuth的callbackURL打到他们的localhost开发环境。 显然它最近被禁用了。 http://code.google.com/p/twitter-api/issues/detail?id=534#c1
有没有人有解决方法。 我真的不想停止我的发展
替代scheme1
设置您的.hosts(Windows)或etc / hosts文件,将活动域指向您的本地主机IP。 如:
127.0.0.1 xyz.com
其中xyz.com是你真正的领域。
替代2。
另外,文章还提供了一个可选的URL缩短服务。 缩短您的本地url,并提供callback结果。
替代3。
此外,它似乎可以提供例如http://127.0.0.1:8080
作为Twittercallback,而不是http://localhost:8080
。
我上个星期只好这样做了。 显然localhost
不工作,但127.0.0.1
做图。
这当然假设你正在用Twitter注册两个应用程序,一个用于你的在线www.mysite.com
,另一个用于127.0.0.1
。
是的,由于最近在OAuth中发现的安全问题而被禁用。 现在唯一的解决scheme是创build两个OAuth应用程序 – 一个用于生产和一个用于开发。 在开发应用程序中,您设置了本地主机callbackURL而不是活动的URL。
这是我做到的:
注册callbackURL: 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>
确保将项目的“使用dynamic端口”属性设置为“false”,然后input一个静态端口号。 (我用1066)。
我希望这有帮助!
它所做的只是一个简单的DNS关联到127.0.0.1,它允许您绕过localhost或127.0.0.1上的filter:
smackaho.st。 28800 IN A 127.0.0.1
所以,如果你点击链接,它会显示你在你的本地networking服务器上(如果你没有,你会得到一个404)。 你当然可以将它设置为你想要的任何页面/端口:
callbackURL编辑
http://localhost:8585/logintwitter.aspx
转换成
http://127.0.0.1:8585/logintwitter.aspx
我正在使用我的本地主机上的Twittercallbackurl。 如果您不确定如何创build虚拟主机(这很重要),请使用Ampps。 他真的很酷,很容易。 在几个步骤中,你有自己的虚拟主机,然后每个url将在其上工作。 例如:
-
下载并安装ampps
-
添加新域。 (这里你可以设置例如twitter.local),这意味着你的虚拟主机将是http://twitter.local ,它将在第3步之后工作。
-
我在Win上工作,所以去下你的主机文件 – > C:\ Windows \ System32 \ Drivers \ etc \ hosts并添加行:127.0.0.1 twitter.local
重新启动你的Ampps,你可以使用你的callback。 你可以指定任何url,即使你使用了一些框架MVC或者你有htaccess url重写。
希望这个帮助! 干杯。
当我在本地进行开发时,我总是build立一个本地托pipe的dev名称,反映我正在进行的项目。 我通过xampp \ apache \ conf \ extra \ httpd-vhosts.conf,然后在\ Windows \ System32 \ drivers \ etc \ hosts中将其设置为xampp。
因此,如果我为example.com设置了一个本地开发站点,我将在这两个文件中将其设置为example.dev。
简短的回答:一旦设置正确,你可以简单地把这个url( http://example.dev )当做设置你的Twitter应用程序的活动(而不是本地)。
这里给出了类似的答案: https : //dev.twitter.com/discussions/5749
直接引用(强调增加):
您可以使用我们在应用程序详细信息页面上识别的域名提供任何有效的URL。 OAuth 1.0a要求您在stream的请求令牌步骤上发送一个oauth_callback值, 我们将接受该步骤中基于dynamic的基于locahost的callback 。
这对我来说就像一个魅力。 希望这可以帮助。
使用Fiddler可以非常方便地完成:
- 打开菜单工具>主机…
- 像
127.0.0.1 your-production-domain.com
插入一行,确保选中“启用重新映射请求…”。 不要忘记按保存 。 - 如果需要访问真实的生产服务器,只需退出Fiddler或禁用重新映射即可。
- 再次启动Fiddler将打开重新映射(如果它被选中)。
令人127.0.0.1:3000 your-production-domain.com
是,您可以指定一个自定义端口,如下所示: 127.0.0.1:3000 your-production-domain.com
: 127.0.0.1:3000 your-production-domain.com
(通过主机文件实现这一点是不可能的)。 此外,而不是IP,您可以使用任何域名(例如, localhost
)。
这样,有可能(但不是必须)只注册一次你的Twitter应用程序(只要你不介意在本地开发和生产中使用相同的密钥)。
在#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应用程序中设置callbackurl:127.0.0.1:3000,并将WEBrick设置为在127.0.0.1而不是0.0.0.0上绑定
命令:rails s -b 127.0.0.1
看起来Twitter现在允许localhost
以及您在Callback URL
设置中的任何内容,只要在那里有价值。
我为此苦苦挣扎,随之而来的是十多个解决scheme,最后,我必须要做的就是与本地主机上的任何SSL协议一起工作:
去下载: cacert.pem文件
在php.ini
* un-comment and change: curl.cainfo = "c:/wamp/bin/php/php5.5.12/cacert.pem"
- 您可以通过在CLI中运行
php --ini
来find您的php.ini
文件在您的机器上的php --ini
- 我将cacert.pem放在与php.ini相同的目录中,以方便使用。
这些是我的笔记本电脑上使用本地应用程序的Facebook工作的步骤:
- 转到apps.twitter.com
- input名称,应用程序描述和您的站点URL注意:对于localhost:8000,使用127.0.0.1:8000,因为前者不起作用
- input与您的应用程序的TWITTER_REDIRECT_URI中定义的callbackURL匹配的callbackURL。例如: http : //127.0.0.1/login/twitter/callback (localhost将不起作用)。
- 如果您希望请求用户的电子邮件地址,请input“隐私政策”和“使用条款”url
- 选中同意条款checkbox
- 点击[创build您的Twitter应用程序]
- 切换到顶部的[Keys and Access Tokens]选项卡
- 将“使用者密钥(API密钥)”和“使用者密钥(API密钥)”复制到应用程序中的TWITTER_KEY和TWITTER_SECRET
- 单击“权限”选项卡并正确设置为“只读”,“读写”或“读取,写入和直接发送消息”(使用您的应用程序所需的最less侵入选项,仅用于OAuthlogin“只读”足够
- 如果您希望将用户的电子邮件地址返回到OAuthlogin数据(在大多数情况下选中是,请在“其他权限”下)选中“请求来自用户的电子邮件地址”checkbox。