37

OAuth サービス プロバイダーと通信する必要がある Python アプリケーションを構築しています。SP では、コールバック URL を指定する必要があります。localhost を指定しても、明らかに機能しません。公開サーバーをセットアップできません。サーバー/ホスティングの支払い以外にアイデアはありますか? これは可能ですか?

4

7 に答える 7

18

2つのこと:

  1. 問題の OAuth サービス プロバイダーは、コールバック URL を指定しないとエラーが発生する場合、OAuth 仕様に違反しています。callback_url はOPTIONAL パラメータとして指定されています

  2. しかし、衒学的なことはさておき、おそらく、ユーザーが完了したときにコールバックを取得して、リクエスト トークンをアクセス トークンと交換できることを確認したいと思うでしょう。Yahoo の FireEagle 開発者ドキュメントには、これを行う方法に関する優れた情報がたくさんあります。

2 番目のケースでも、実際にはコールバック URL がインターネットから見える必要はまったくありません。OAuth サービス プロバイダーは、ユーザーがユーザー名/パスワードを提供するために使用するブラウザーをコールバック URL にリダイレクトします。

これを行う一般的な方法は次の 2 つです。

  1. アプリケーション内から、完了コールバックのために何らかのポート ( http://localhost:1234/など) をリッスンするダム Web サービスを作成するか、または
  2. プロトコル ハンドラーを登録します (そのようなことを行う方法については、OS のドキュメントを確認する必要がありますが、<a href="skype:555-1212"> のようなことが可能になります)。

(あなたがここに住んでいると私が信じているフローの例です。)

于 2009-03-22T06:15:23.070 に答える
10

*nix スタイルのシステムを使用している場合は、次のようなエイリアスを作成します127.0.0.1 mywebsite.dev(/etc/hosts上記のような行がファイルに含まれている必要がありますhttp://website.dev/callbackurl/for/app。コールバック URL で使用し、ローカル テスト中に使用します。

于 2012-08-24T10:16:18.753 に答える
5

これは Facebook OAuth を使用したもので、サイト URL とコールバック URL として「http://127.0.0.1:8080」を実際に指定できました。Facebook アプリへの変更が反映されるまで数分かかりましたが、その後は機能しました。

于 2011-11-01T18:40:58.677 に答える
1

これはあなたを助けるかもしれません:

http://www.marcworrell.com/article-2990-en.html

これはphpなので、開発サーバーでのセットアップは非常に簡単です。

私はこれを一度試しました:

http://term.ie/oauth/example/

とてもシンプルです。下部にコードをダウンロードするためのリンクがあります。

于 2009-03-22T01:42:42.867 に答える
1

localtunnel [ポート] と出来上がり

http://blogrium.wordpress.com/2010/05/11/make-a-local-web-server-public-with-localtunnel/

http://github.com/progrium/localtunnel

于 2010-06-01T21:59:59.423 に答える
0

2 つのアプリケーションを作成できますか? 1 つは展開用、もう 1 つはテスト用です。

または、リクエスト トークンをリクエストするときに oauth_callback パラメータを含めることもできます。oauth_callback で指定された URL にリダイレクトするプロバイダー (Twitter、Google など) もありますが、このコールバック URL を無視して、構成時に指定された URL にリダイレクトするプロバイダー (Yahoo など) もあります。

于 2010-06-25T12:17:48.727 に答える
0

したがって、この問題を (BitBucket の OAuth インターフェイスを使用して) 解決した方法は、localhost へのコールバック URL (または実際に必要なもの) を指定し、curl で認証 URL をたどることでしたが、HTTP ヘッダーのみを返すというねじれがありました。例:

curl --user BitbucketUsername:BitbucketPassword -sL -w "%{http_code} %{url_effective}\\n" "AUTH_URL" -o /dev/null

資格情報と認証 URL を挿入します (感嘆符をエスケープすることを忘れないでください!)。

あなたが得るべきものは次のようなものです:

200 http://localhost?dump&oauth_verifier=OATH_VERIFIER&oauth_token=OATH_TOKEN

そして、これから oath_verifier をスクレイピングできます。

Pythonで同じことをする:

import pycurl
devnull = open('/dev/null', 'w')
c = pycurl.Curl()

c.setopt(pycurl.WRITEFUNCTION, devnull.write)
c.setopt(c.USERPWD, "BBUSERNAME:BBPASSWORD")
c.setopt(pycurl.URL, authorize_url)
c.setopt(pycurl.FOLLOWLOCATION, 1) 
c.perform()

print c.getinfo(pycurl.HTTP_CODE), c.getinfo(pycurl.EFFECTIVE_URL)

これが誰かに役立つことを願っています!

于 2013-04-03T13:06:46.457 に答える