Python-Djangoユーザー登録モジュール--QQ登録(二)
8037 ワード
QQの登録するウェブサイトのビューに戻ります
1.バックエンドインタフェースの設計:
要求方式:GET
パラメータ名
を選択します.
必要かどうか
説明
next
str
いいえ
QQは登録して成功した後に美多商城のどのURLに入ります
返却データ:JSON
戻り値
を選択します.
必要かどうか
説明
login_url
str
はい
qq登録サイト
Qログインに関するアプリケーション開発情報をプロファイルに追加
新しいoauth/utils.pyファイル、QQログイン補助ツールクラスの作成
oauth/views.pyでのインプリメンテーションビュー
2.先端
loginを変更します.js,methodsにq_を追加するloginメソッド
1.バックエンドインタフェースの設計:
要求方式:GET
/oauth/qq/authorization/?next=xxx
要求パラメータ:クエリー文字列パラメータ名
を選択します.
必要かどうか
説明
next
str
いいえ
QQは登録して成功した後に美多商城のどのURLに入ります
返却データ:JSON
{
"login_url": "https://graph.qq.com/oauth2.0/show?which=Login&display=pc&response_type=code&client_id=101474184&redirect_uri=http%3A%2F%2Fwww.meiduo.site%3A8080%2Foauth_callback.html&state=%2F&scope=get_user_info"
}
戻り値
を選択します.
必要かどうか
説明
login_url
str
はい
qq登録サイト
Qログインに関するアプリケーション開発情報をプロファイルに追加
# QQ
QQ_CLIENT_ID = '101474184'
QQ_CLIENT_SECRET = 'c6ce949e04e12ecc909ae6a8b09b637c'
QQ_REDIRECT_URI = 'http://www.meiduo.site:8080/oauth_callback.html'
QQ_STATE = '/'
新しいoauth/utils.pyファイル、QQログイン補助ツールクラスの作成
from urllib.parse import urlencode, parse_qs
from urllib.request import urlopen
from itsdangerous import TimedJSONWebSignatureSerializer as Serializer, BadData
from django.conf import settings
import json
import logging
from . import constants
logger = logging.getLogger('django')
class OAuthQQ(object):
"""
QQ
"""
def __init__(self, client_id=None, client_secret=None, redirect_uri=None, state=None):
self.client_id = client_id or settings.QQ_CLIENT_ID
self.client_secret = client_secret or settings.QQ_CLIENT_SECRET
self.redirect_uri = redirect_uri or settings.QQ_REDIRECT_URI
self.state = state or settings.QQ_STATE #
def get_qq_login_url(self):
"""
qq
:return: url
"""
params = {
'response_type': 'code',
'client_id': self.client_id,
'redirect_uri': self.redirect_uri,
'state': self.state,
'scope': 'get_user_info',
}
url = 'https://graph.qq.com/oauth2.0/authorize?' + urlencode(params)
return url
oauth/views.pyでのインプリメンテーションビュー
# url(r'^qq/authorization/$', views.QQAuthURLView.as_view()),
class QQAuthURLView(APIView):
"""
QQ url
"""
def get(self, request):
"""
qq url
"""
next = request.query_params.get('next')
oauth = OAuthQQ(state=next)
login_url = oauth.get_qq_login_url()
return Response({'login_url': login_url})
2.先端
loginを変更します.js,methodsにq_を追加するloginメソッド
// qq
qq_login: function(){
var next = this.get_query_string('next') || '/';
axios.get(this.host + '/oauth/qq/authorization/?next=' + next, {
responseType: 'json'
})
.then(response => {
location.href = response.data.login_url;
})
.catch(error => {
console.log(error.response.data);
})
}