(次のテキストはhttp://psa.matiasaguirre.net/docs/use_cases.html#multiple-scopes-per-providerのドキュメントから抜粋したものです)
現時点では、python-social-auth は単一のバックエンドに対して複数のスコープを定義する方法を提供していません。ユーザーに可能な限り最小のスコープを要求し、本当に必要なときにアクセスを増やすことが推奨されるため、これは通常望ましいことです。元のバックエンドを拡張する新しいバックエンドを追加して、その動作を実現することができます。これには 2 つの方法があります。
オーバーライドget_scope()
方法
from social.backends.facebook import FacebookOAuth2
class CustomFacebookOAuth2(FacebookOauth2):
def get_scope(self):
scope = super(CustomFacebookOAuth2, self).get_scope()
if self.data.get('extrascope'):
scope += [('foo', 'bar')]
return scope
このメソッドは非常に単純です。バックエンドでスコープ値を返すメソッド ( ) をオーバーライドし、またはデータ ( )get_scope()
のパラメーターで指定されている場合は、リストに追加の値を追加します。GET
POST
self.data
この新しいバックエンドをプロジェクトのどこかに配置し、オリジナルをこの新しいバージョンに置き換えFacebookOAuth2
ますAUTHENTICATION_BACKENDS
。
スコープを処理するバックエンドの定義
元のバックエンドから拡張された名前を上書きする 2 番目のバックエンドを定義することで同じことを行うことができます。これは、新しい URL と新しいバックエンドの新しい設定も意味します (名前は設定名を作成するために使用されるため)。すべてのプロバイダーが複数のリダイレクト URL を定義するオプションを提供しているわけではないため、プロバイダーの新しいアプリケーション。それを行うには、次のようなバックエンドを追加するだけです:
from social.backends.facebook import FacebookOAuth2
class CustomFacebookOAuth2(FacebookOauth2):
name = 'facebook-custom'
この新しいバックエンドをプロジェクト内のどこかに配置し、オリジナルFacebookOAuth2
を に保持しますAUTHENTICATION_BACKENDS
。これで、新しい一連の URL が機能します。
/login/facebook-custom
/complete/facebook-custom
/disconnect/facebook-custom
また、新しい設定のセット:
SOCIAL_AUTH_FACEBOOK_CUSTOM_KEY = '...'
SOCIAL_AUTH_FACEBOOK_CUSTOM_SECRET = '...'
SOCIAL_AUTH_FACEBOOK_CUSTOM_SCOPE = [...]
追加のアクセス許可が必要な場合は、ユーザーをリダイレクトして/login/facebook-custom
、この新しいバックエンドのソーシャル認証エントリを取得し、その中でuser.social_auth.get(provider='facebook-custom')
を使用access_token
します。