twitter开发者账号申请 - Twitter oAuth callbackUrl-本地主机开发




api接口 developer (14)

其他任何人都难以让Twitters oAuth的回调URL访问本地主机开发环境。 显然它最近已被禁用。 http://code.google.com/p/twitter-api/issues/detail?id=534#c1

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


Answers

使用http://smackaho.st

它所做的只是一个简单的DNS关联到127.0.0.1,它允许您绕过localhost或127.0.0.1上的过滤器:

smackaho.st。 28800 IN A 127.0.0.1

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

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


我为此苦苦挣扎,并遵循了十几种解决方案,最后,我必须要做的就是与本地主机上的任何SSL协议一起工作:

去下载: cacert.pem文件

php.ini * un-comment and change: curl.cainfo = "c:/wamp/bin/php/php5.5.12/cacert.pem"

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

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

命令:rails s -b 127.0.0.1


上周我只需要做这个。 显然localhost不起作用,但127.0.0.1做图。

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


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


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

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

希望这个帮助! 干杯。


这些步骤可以帮助我在笔记本电脑上使用本地应用程序的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 : http://127.0.0.1/login/twitter/callback (localhost不起作用)。
  • 如果您希望请求用户的电子邮件地址,请输入“隐私政策”和“使用条款”网址
  • 选中同意条款复选框
  • 点击[创建您的Twitter应用程序]
  • 切换到顶部的[Keys and Access Tokens]选项卡
  • 将“客户密钥(API密钥)”和“消费者密钥(API密钥)”复制到应用程序中的TWITTER_KEY和TWITTER_SECRET
  • 单击“权限”选项卡并正确设置为“只读”,“读取和写入”或“读取,写入和指导消息”(使用您的应用程序所需的最少侵入选项,仅用于OAuth登录“只读”足够
  • 如果您希望将用户的电子邮件地址返回到OAuth登录数据(在大多数情况下选中是,请在“其他权限”下)选中“请求来自用户的电子邮件地址”复选框。

看起来Twitter现在允许localhostCallback URL设置中的任何内容一起使用,只要其中存在价值即可。


备选方案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


这是我做到的:

注册回调URL: http://127.0.0.1/Callback.aspx : 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)。

我希望这有帮助!



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

回叫网址已编辑

http://localhost:8585/logintwitter.aspx

转换成

http://127.0.0.1:8585/logintwitter.aspx

基于fg.radigales答案,这是我用来启动应用程序的可能性,但是否则会回退到浏览器:

Intent intent = null;
try {
    // get the Twitter app if possible
    this.getPackageManager().getPackageInfo("com.twitter.android", 0);
    intent = new Intent(Intent.ACTION_VIEW, Uri.parse("twitter://user?user_id=USERID"));
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
} catch (Exception e) {
    // no Twitter app, revert to browser
    intent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://twitter.com/PROFILENAME"));
}
this.startActivity(intent);

UPDATE

添加了intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 解决Twitter在我的应用程序中打开而不是作为新活动的问题。





twitter oauth