>  기사  >  백엔드 개발  >  Django가 Social-Auth를 사용하여 WeChat 제3자 웹사이트에서 QR 코드 로그인을 구현하는 방법 소개

Django가 Social-Auth를 사용하여 WeChat 제3자 웹사이트에서 QR 코드 로그인을 구현하는 방법 소개

高洛峰
高洛峰원래의
2017-03-16 15:50:023863검색

서문

웹사에 새로운 공식 홈페이지 제작을 의뢰하면서 第三方账号로그인 기능을 추가하려고 했으나, 일부 신청 단계가 번거로워서. 당시 오픈플랫폼(특히 위챗오픈플랫폼)이 있어서 계속 미루다가 최근에는 직접 관련 기능만 추가하게 됐네요.

<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-auths를 찾았지만 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.comect_uri 매개변수 오류!re<a href="http://www.php.cn/wiki/1275.html" target="_blank">dir</a>ect_uri 参数错误

실용적 steps

  1. Install : social-auth 공식 홈페이지에서는
    을 사용하기 때문에, 소스코드를 다운로드 받아보니 python-social-auth==0.2.12social-backendsWeixin.py

    pip install python-social-auth==0.2.12
  2. 구성: 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',
       )
  • WeChat 오픈 플랫폼 애플리케이션

    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
  • 구성 후 홈페이지를 실행하고 www.domain name.com/login/weixin을 이용해 해당 페이지에 접속하여 해당 페이지를 열지만, 혹시 오류 발견하셨나요:

    , 실제 작업 중에 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

    성명:
    본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.