3

OAuth2.0 を実行してアクセス トークンを取得し、POST 要求を実行してファイルをアップロードする必要があるリモート サーバーにいくつかのファイルを転送する必要がありました。

今では、クラウド上に Django プロジェクトをセットアップしてから OAuth2 を実行するのが面倒ですが、そのための「良すぎる」ライブラリはありません。

そこで、リクエストなどを受け付けるサーバーを実際にセットアップすることなく、rauth lib を単純な python スクリプトとして使用して OAuth2 を実行することを考えています。

ただし、リモート サーバー プロファイルでは、redirect_url を提供する必要があり、もちろん rauth クライアント ライブラリにも提供する必要があります。

クラウド上にプロジェクトを実際に設定せずにこの承認を行う方法はありますか..単純なpythonスクリプトが私が探しているものです.

4

1 に答える 1

3

私は rauth の作成者でありメンテナーです。

Rauth はredirect_uri. ただし、最終的な目標がサーバーをセットアップすることではない場合、これはプロバイダーの要求があっても実行できるはずredirect_uriです。たとえば、Flask を使用して最小限のサーバーをセットアップできる localhost にリダイレクトするか、プロバイダーが許可する場合は、Facebook がhttps://www.facebook.com/connect/login_success.htmlを提供するなど、他の任意の URLこの目的。また、使用しているプロバイダーにも同様のスキームがある場合があります。これは rauthの例です。

もう 1 つのオプションは、grant_type=password で Bearer Auth を使用することです。すべての OAuth 2.0 プロバイダーはBearer Auth をサポートすることになっていますが、パスワード grant_type を実装していない可能性があります。redirect_uri代わりに、サーバーにユーザー資格情報を渡すことになり、アクセス トークンが返されます。プロバイダーがパスワードの grant_type を使用した Bearer Auth を許可している場合、これはおそらく理想的な方法です。Rauth 0.5.3 はデフォルトで Bearer Auth を使用しようとするため、grant_type を渡すだけで済みます。これを行う前に、必ず更新してください。

簡単な例を次に示します。

# assume you have constructed an OAuth2Service object and bound it to `serv`

params = {'grant_type': 'password',
          'username': 'foo',
          'password': 'hunter2'}

s = service.get_auth_session(params=params)
r = s.get('https://example.com/api/some/endpoint')

プロバイダーや目的によっては、もう少し調査が必要になる場合があります。ただし、うまくいけば、これで何かを始めることができます。

編集

パスワードgrant_typeに関する私のコメントは少し混乱していると思います.Bearer Authで使用する必要があることを暗示しているようです(ここでBearer Authとは、Bearer形式のAuthorizationヘッダーにアクセストークンを添付することを意味します)が、実際にはだ。推奨されませんが、資格情報をエンティティ メソッドと共に送信することは許容されます[1]。rauth を使用していて、認証が期待どおりに機能していないことがわかった場合は、次のように Bearer Auth を無効にする必要がある場合があります。

s = service.get_auth_session('/some/resource',
                             data={'code': code},
                             bearer_auth=False)

仕様から:

[1] 「クライアントは、ベアラー HTTP 承認スキームで Authorization リクエスト ヘッダー フィールドを使用して、ベアラー トークンで認証されたリクエストを作成する必要があります。リソース サーバーはこのメソッドをサポートする必要があります。」

于 2013-03-29T04:13:05.387 に答える