웹사에 새로운 공식 홈페이지 제작을 의뢰하면서 第三方账号
로그인 기능을 추가하려고 했으나, 일부 신청 단계가 번거로워서. 당시 오픈플랫폼(특히 위챗오픈플랫폼)이 있어서 계속 미루다가 최근에는 직접 관련 기능만 추가하게 됐네요.
<a href="http://www.php.cn/wiki/1514.html" target="_blank">Python</a>
과 <a href="http://www.php.cn/wiki/1515.html" target="_blank">Django</a>
을 처음 접했을 때부터 동영상과 공부할 연습 자료를 많이 찾아보다가 MVT结构
을 차근차근 마스터해 나갔습니다. > 등등. Baidu는 제3자 로그인에 관한 매우 유용한 두 가지 기사를 발견하고 그로부터 많은 것을 배웠습니다.
1. Python은 WeChat 제3자 웹사이트 스캔 코드 로그인(Django)을 구현합니다.
2. django -social-auth를 사용하면 중국 소셜 네트워킹 사이트(QQ, Weibo, Douban, Baidu, Renren, WeChat)에 대해 3자 로그인이 가능합니다.
QQ와 Weibo의 로그인을 깨닫고 저는 깊이 깨달았습니다. 이를 달성하기 위한 social-auth
사용 타사 로그인은 매우 간단하고 편리하며 직접적이고 완벽합니다. 그러나 微信
을 동일한 방식으로 구현하는 방법을 찾지 못했습니다(위의 두 번째 기사에서도 언급하지 않았습니다). ; social-auth
해석 문서에서 Weixin의 내용을 찾을 수 없었습니다. 공식 웹사이트에는 이미 해당 User
데이터 테이블과 제3자 저장을 위한 UserSocialAuth
데이터 그리드가 있으므로 매우 그렇습니다. 위의 첫 번째 방법을 사용하여 구현한 후 사용자 데이터 테이블을 추가하고 수정하는 데 어려움을 겪었습니다. 그 구조를 정말로 파괴하고 싶지 않아서 데이터베이스를 다시 저장하는 방법을 배우고 싶었습니다. social-back<a href="http://www.php.cn/wiki/1048%20.html" target="_blank">end<code>social-auth
s를 찾았지만 social-back<a href="http://www.php.cn/wiki/1048.html" target="_blank">end</a>s
찾지 못했습니다. 그렇다면 WeChat을 지원할 수 있다는 뜻이 아닌가요? Weixin.py
신청 및 활성화를 위해서는 많은 인증 정보를 제출해야 하며 엔의 수수료가 필요합니다. 微信开放平台
300연간 인증 수수료는 공식 계정, 서비스 계정 등과 다릅니다. 주소: http://open.weixin.qq.com
항목을 주의 깊게 작성하고 기본 도메인 이름을 작성하세요. 예를 들어 授权回调域
등을 쓸 수 없고 www.zzmxy.com/login/wechat
만 쓰면 됩니다(http나 https를 추가할 필요 없음). 그렇지 않으면 후속 문제는 re<a href="%EA%B0%80%20%EB%90%A9%EB%8B%88%EB%8B%A4.%20http://www.php.cn%20/wiki/1275.html" target="_blank">dir<code>www.zzmxy.com
ect_uri 매개변수 오류!re<a href="http://www.php.cn/wiki/1275.html" target="_blank">dir</a>ect_uri 参数错误
Install : social-auth
공식 홈페이지에서는
을 사용하기 때문에, 소스코드를 다운로드 받아보니 python-social-auth==0.2.12
의 social-backends
도 Weixin.py
pip install python-social-auth==0.2.12
구성: social-auth
구성입니다. : 위에서 언급한 두 번째 글을 참고하세요. SOCIAL_AUTH_PIPELINE
구성: AUTHENTICATION_BACKENDS
AUTHENTICATION_BACKENDS = ( 'social.backends.weibo.WeiboOAuth2', #微博的功能 'social.backends.qq.QQOAuth2', #QQ的功能 'social.backends.weixin.WeixinOAuth2', #这个是导入微信的功能 'oscar.apps.customer.auth_backends.EmailBackend', 'django.contrib.auth.backends.ModelBackend', )
및 APPID
구성 : SECRET
SOCIAL_AUTH_WEIBO_KEY = '53*****29' SOCIAL_AUTH_WEIBO_SECRET = '272152************81a8b3' SOCIAL_AUTH_QQ_KEY = '10*****51' SOCIAL_AUTH_QQ_SECRET = '5807************d15bd97' SOCIAL_AUTH_WEIXIN_KEY = 'wx4fb***********599' #开放平台应用的APPID SOCIAL_AUTH_WEIXIN_SECRET = 'f1c17************08c0489' #开放平台应用的SECRET
, 실제 작업 중에 Scope参数错误或没有Scope权限
의 자동 생성된 QR 코드 액세스 링크에 social-auth
매개변수가 누락된 것을 발견했는데, 위챗에서 제공하는 공식 QR 코드 액세스 링크는 이렇습니다. : scope
https://open.weixin.qq.com/connect/qrconnect?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect위 필수 매개변수는 5개입니다.
은 생략 가능하지만, 웹 페이지에 대한 승인된 접근을 위해 state
범위 매개변수는 고정값 범위입니다. =sns<a href="http://www.php.cn/js/js-weixinapp-api.html" target="_blank">api<code>scope
_login, 이 경우에는 다음을 수행해야 합니다. 소스 코드에서 이 매개변수 값을 추가하고 실제 scope
설치 경로를 기반으로 scope=sns<a href="http://www.php.cn/js/js-weixinapp-api.html" target="_blank">api</a>_login
파일을 찾습니다. 예를 들어 social-auth
를 사용하여 만든 경로는 site-packages
/home/ubuntu/env/mppython/lib/python2.7/site-packages/social/backends/weixin.py
/social/backends/weixin.py
입니다. . 내부의 VirtualEnv
내용 찾기(원문): def auth_params(self, state=None): appid, secret = self.get_key_and_secret() params = { 'appid': appid, 'redirect_uri': self.get_redirect_uri(state), } if self.STATE_PARAMETER and state: params['state'] = state if self.RESPONSE_TYPE: params['response_type'] = self.RESPONSE_TYPE return params
def auth_params()
사전에
def auth_params(self, state=None): appid, secret = self.get_key_and_secret() params = { 'appid': appid, 'redirect_uri': self.get_redirect_uri(state), 'scope': 'snsapi_login', } if self.STATE_PARAMETER and state: params['state'] = state if self.RESPONSE_TYPE: params['response_type'] = self.RESPONSE_TYPE return params
params
수정하고 저장한 후 프로젝트를 다시 실행하고 www.domain name.com/login/weixin을 다시 방문하여 효과를 확인하세요! scope
위 내용은 Django가 Social-Auth를 사용하여 WeChat 제3자 웹사이트에서 QR 코드 로그인을 구현하는 방법 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!