Twitter oAuth callbackUrl-ローカルホスト開発


112

Twitters oAuthのコールバックURLを取得してlocalhost開発環境にアクセスするのに苦労している人はいますか?どうやら最近無効になっているようです。http://code.google.com/p/twitter-api/issues/detail?id=534#c1

誰かが回避策を持っていますか?開発を止めたくない


TwitterのコールバックURLを実際のウェブサイトのURLに設定することで機能しました。localhost-> twitterサインアップでのテスト中に、(ウェブサイトのURLではなく)localhostにリダイレクトされます。
Sudhakar Krishnan

回答:


135

代替1。

.hosts(Windows)またはetc / hostsファイルを設定して、ライブドメインがlocalhost IPを指すようにします。といった:

127.0.0.1 xyz.com

ここで、xyz.comは実際のドメインです。

代替2。

また、この記事では、URL短縮サービスを代わりに使用するためのヒントも提供しています。ローカルURLを短くして、結果をコールバックとして提供します。

代替3。

さらに、のhttp://127.0.0.1:8080代わりに、たとえばTwitterへのコールバックとして提供するように機能しているようですhttp://localhost:8080


3
これにより次のエラーが発生する可能性があります:リモートサーバーがエラーを返しました:(401)権限がありませんか?
DevDave 2013

トンネルがない場合、localhostはどのように機能しますか?それは実際にあなたのローカルマシンを打っていないのですか?
Jack Tuck

@JackTuckコールバックは、Twitterのサーバーではなく、ユーザーのブラウザーによって呼び出されます。
ふわふわした

25

私は先週これをしなければならなかった。どうやらlocalhost動作しませんが、127.0.0.1囲碁の図は表示されます。

もちろん、これはTwitterに2つのアプリを登録していることを前提としています。1つはライブ用www.mysite.com、もう1つは用127.0.0.1です。



8

はい、OAuthで見つかった最近のセキュリティ問題のため、無効になりました。現時点での唯一のソリューションは、本番用と開発用の2つのOAuthアプリケーションを作成することです。開発アプリケーションでは、ライブのものではなくローカルホストのコールバックURLを設定します。


私はそれを試してみましたが、URL形式としてlocalhost:3000を受け入れません...
David N. Welton

1
はい、そのようなURLをフィルタリングしているようです。:(しかし、カスタムコールバックURLのサポートが帰ってきた-多分彼らはそこにサポートされている。
arikfr

8

編集されたコールバックURL

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のフィルターをバイパスできる127.0.0.1への単純なDNSアソシエーションです。

smackaho.st。287.0 IN A 127.0.0.1

そのため、リンクをクリックすると、ローカルWebサーバーにあるものが表示されます(Webサーバーがない場合は、404が表示されます)。もちろん、任意のページ/ポートに設定できます。

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


6
smackaho.stは利用できなくなりましたtbaggery.com/2010/03/04/smack-a-ho-st.html。代わりにlvh.meを使用してください。それは直接localhostに行きます。
ジャスティン

5

私は自分のlocalhostで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を再起動すると、コールバックを使用できます。フレームワークMVCを使用している場合や、htaccess urlを書き換えている場合でも、任意のURLを指定できます。

このヘルプを願っています!乾杯。


先端をありがとう。Linuxの場合、開発ドメイン名を/ etc / hostsに追加するだけ
jeremyvillalobos 14

3

ローカルで開発するときは、自分が取り組んでいるプロジェクトを反映するローカルでホストされた開発者名を常に設定します。これをxampp \ apache \ conf \ extra \ httpd-vhosts.confからxamppに設定し、さらに\ Windows \ System32 \ drivers \ etc \ hostsにも設定しました。

したがって、example.comのローカル開発サイトを設定する場合、これら2つのファイルでexample.devとして設定します。

短い回答:これが適切に設定されたら、Twitterアプリケーションを設定するときに、このURL(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ファイルを使用してこれを実現することは不可能です)。また、IPの代わりに任意のドメイン名(例:)を使用できますlocalhost

このようにして、Twitterアプリを1回だけ登録することができます(ただし必須ではありません)(ローカルの開発と本番で同じキーを使用してもかまわない場合)。


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

TwitterAPIExchange.phpはこちらからダウンロードできます。github.com/ J7mbo / twitter
ヘルパー

2

同じ問題があり、localhostを有効なコールバックURLとして指定できませんでした。そこで、開発者を助けるためのシンプルなドメインを作成しました:https : //tolocalhost.com

必要なローカルホストのドメインとポートへのパスをリダイレクトします。他の開発者にも役立つことを願っています。


優れたリソースですが、ドメインによっては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

1
@Channaホスト名フィールドにURL全体を入力しないでください。これは、URLではなく、ホスト名と呼ばれます。あなたの場合、ホストフィールドはlocalhostである必要があります。あなたは8080にポートを設定しに行くのリダイレクト設定:localhostを::これはにリダイレクトされます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アプリでcallbackurlを設定します:127.0.0.1:3000、0.0.0.0ではなく127.0.0.1でバインドするようにWEBrickを設定します

コマンド:rails s -b 127.0.0.1


1

Twitter は、値がある限りlocalhostCallback URL設定にあるものと一緒に許可するようになりました。


1

私はこれに苦労し、12の解決策に従いましたが、ローカルホスト上の任意の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と同じディレクトリに配置しました。

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にコピーします。
  • [権限]タブをクリックし、[読み取り専用]、[読み取りと書き込み]、または[読み取り、書き込み、ダイレクトメッセージ]に適切に設定します(アプリケーションに必要な最も煩わしくないオプションを使用してください。OAuthログインの[読み取り専用]は十分
  • ユーザーのメールアドレスをOAuthログインデータに返すようにする場合は、[追加の権限]で[ユーザーにメールアドレスをリクエストする]チェックボックスをオンにします(ほとんどの場合、[はい]をオンにします)。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.