I need to make an api in pyramid and i think oauth2 would be good to implement not to reinvent the wheel, already installed pyramid_oauth2 package but not sure about documentation or examples. Somebody knows any good resource? a github project or something for a oauth2 service provider would be nice.
1 に答える
私のパッケージについて話しているのであれば、これが私のウェブサイトのサンプルです。これはまだかなり実験的なものですが、facebook やその他の oauth2 プロバイダーで動作するはずです。残念ながら、実際のところ twitter は問題である oauth1.0 のみです。
そのため、そのようにpyramid_oauth2を含める必要があります
config.include('pyramid_oauth2')
または config.ini ファイル内。
次に、構成が含まれた後に別の場所に追加できます。
config.add_oauth2_provider(
Provider(
'vkontakte',
'client_id',
'client_secret',
'https://api.vk.com/oauth/authorize',
'https://oauth.vk.com/access_token'
)
)
これにより、 へのパスが作成され/oauth/vkontakte/authenticate
ます。これは、リダイレクト フローの要求が開始される場所です。次に、にリダイレクトし、コードを受け取るauthorize url
も作成します。次に、そのコードをパス/oauth/vkontakte/callback
に送り返します。access_token
何かが機能しない場合は、お気軽に問題を報告してくださいProvider
。スコープなどの追加パラメーターをコンストラクターに送信することができます。現時点では、これらのパラメーターはすべてのリクエストに対してサーバーに送信されます。
ああ、プロバイダーにコールバック関数を提供する必要があります。コールバックなどを使用した例で回答を更新します。
それでもわからない場合は、facebook で小さなサンプル アプリを作成し、今日か明日に github にプッシュできます。
コールバックは、 と を受け取る単なる呼び出し可能オブジェクトでrequest
ありdata
、アクセス トークンはデータに含まれている必要があります。
アクセストークンを取得する方法は簡単で、アクセストークンを受け取ったら、標準的なコールバックを実行して oauth API などに登録できるようにする必要があることを念頭に置いていました。facebook connect などのサイトへの認証のためだけに oauth を探している人はいないと思います。access_token を認証以外にも使用することに興味があるかもしれません。また、ピラミッドは sqlalchemy やその他のデータベースに関するものではないため、何も強制しません。つまり、ZODB で実装すると、SQLAlchemy は簡単になるはずです。
フローは実際には非常に単純であり、現在のクライアントフローに対して oauth2 をまだ正しく実装していないと思います。grant_type などの一部の属性が欠落しています。これらは追加の引数として渡すことができますが、oauth2 サーバーによっては、どこでも正常に機能しない場合があります。
ところで、コード内ではなくそこからロードできるように、ini ファイルにプロバイダーを追加しようとしています。そうすれば、開発、製品などのさまざまなアプリを維持できるようになります。