Jadual Kandungan
前言
注意事项" >注意事项
实操步骤
Rumah pembangunan bahagian belakang Tutorial Python Django使用Social-Auth实现微信第三方网站扫码登录的方法介绍

Django使用Social-Auth实现微信第三方网站扫码登录的方法介绍

Mar 16, 2017 pm 03:50 PM
auth django python

前言

之前让网页公司制作新官网的时候规划有第三方账号的登录功能,但由于当时的一些开放平台申请步骤比较繁琐(尤其是微信开放平台),所以一直拖延着,到了最近只能自己添加相关的功能。

由于是刚接触<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结构什么的弄明白了,第三方登录方面百度找到了两篇很有用的文章,也从中学习到了很多:

1. python实现微信第三方网站扫码登录(Django)
2. 用django-social-auth 做中国社交网站三方登录(QQ,微博,豆瓣,百度,人人,微信)

在实现QQ、微博的登录时就深刻体会到使用social-auth来实现第三方登录是非常简单方便、直接而且完美的,然而却一直没有找到微信怎么也同样来实现(上面第二篇文章也一样没有提及);从social-auth的解读文档里也愣是没找到Weixin的内容,由于官网已经有相应的User数据表以及存储第三方的UserSocialAuth数据格,非常规范,在使用上面第一种方法实现之后却苦恼于用户数据表的添加和修改,真心不想破坏那种结构,就在重拾social-auth想学习一下数据库存储方式的时候,竟然在social-back<a href="http://www.php.cn/wiki/1048.html" target="_blank">end</a>s里发现了Weixin.py,那不就说明能支持微信么?

注意事项

  • 微信开放平台申请及开通需要提交很多认证资料,也需要缴纳¥300每年的认证费用;与公众号、服务号等不一样哦。地址:http://open.weixin.qq.com

  • 认证通过后,添加相应的网页应用,注意授权回调域的填写,写网站的主域名即可,比如说不能写www.zzmxy.com/login/wechat之类的,只需要写www.zzmxy.com 即可(不需要添加http或者https),不然后期都是re<a href="http://www.php.cn/wiki/1275.html" target="_blank">dir</a>ect_uri 参数错误!

实操步骤

  1. 安装social-auth
    由于官网使用的是python-social-auth==0.2.12,下载源码回来之后,发现在social-backends里也是有Weixin.py的,证明可用;

    pip install python-social-auth==0.2.12
    Salin selepas log masuk
  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',
       )
    Salin selepas log masuk
  • 微信开放平台应用APPIDSECRET的配置:

    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
    Salin selepas log masuk
  • 配置完之后,运行你的网站,使用 www.域名.com/login/weixin 访问即可打开相应的页面了,但有没有发现出现错误了:Scope参数错误或没有Scope权限,实际操作过程中,我发现social-auth自动生成的二维码访问链接里,是少了一个scope参数,而微信官方给的二维码访问链接是这样的:

    https://open.weixin.qq.com/connect/qrconnect?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect
    Salin selepas log masuk

    如上需要的参数为5个,state可省略,但scope则是必需的,而对于网页授权的访问,scope作用域参数为固定值scope=sns<a href="http://www.php.cn/js/js-weixinapp-api.html" target="_blank">api</a>_login,这样的话,我们就需要在social-auth的源代码上,把这个参数值给加上,根据你实际的site-packages安装路径,找到/social/backends/weixin.py文件,如我使用VirtualEnv建的路径是:

    /home/ubuntu/env/mppython/lib/python2.7/site-packages/social/backends/weixin.py
    Salin selepas log masuk

    打开这个文件,找到里面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),
        }
        if self.STATE_PARAMETER and state:
            params['state'] = state
        if self.RESPONSE_TYPE:
            params['response_type'] = self.RESPONSE_TYPE
        return params
    Salin selepas log masuk

    params字典里,添加一个scope参数即可,修改后如下:

    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
    Salin selepas log masuk

    修改保存后,再重新运行工程,再次访问 www.域名.com/login/weixin 即可看到效果了!

  • Atas ialah kandungan terperinci Django使用Social-Auth实现微信第三方网站扫码登录的方法介绍. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

    Kenyataan Laman Web ini
    Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

    Alat AI Hot

    Undresser.AI Undress

    Undresser.AI Undress

    Apl berkuasa AI untuk mencipta foto bogel yang realistik

    AI Clothes Remover

    AI Clothes Remover

    Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

    Undress AI Tool

    Undress AI Tool

    Gambar buka pakaian secara percuma

    Clothoff.io

    Clothoff.io

    Penyingkiran pakaian AI

    Video Face Swap

    Video Face Swap

    Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

    Artikel Panas

    <🎜>: Bubble Gum Simulator Infinity - Cara Mendapatkan dan Menggunakan Kekunci Diraja
    4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
    Nordhold: Sistem Fusion, dijelaskan
    1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
    Mandragora: Whispers of the Witch Tree - Cara Membuka Kunci Cangkuk Bergelut
    4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

    Alat panas

    Notepad++7.3.1

    Notepad++7.3.1

    Editor kod yang mudah digunakan dan percuma

    SublimeText3 versi Cina

    SublimeText3 versi Cina

    Versi Cina, sangat mudah digunakan

    Hantar Studio 13.0.1

    Hantar Studio 13.0.1

    Persekitaran pembangunan bersepadu PHP yang berkuasa

    Dreamweaver CS6

    Dreamweaver CS6

    Alat pembangunan web visual

    SublimeText3 versi Mac

    SublimeText3 versi Mac

    Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

    Topik panas

    Tutorial Java
    1677
    14
    Tutorial PHP
    1279
    29
    Tutorial C#
    1257
    24
    PHP dan Python: Paradigma yang berbeza dijelaskan PHP dan Python: Paradigma yang berbeza dijelaskan Apr 18, 2025 am 12:26 AM

    PHP terutamanya pengaturcaraan prosedur, tetapi juga menyokong pengaturcaraan berorientasikan objek (OOP); Python menyokong pelbagai paradigma, termasuk pengaturcaraan OOP, fungsional dan prosedur. PHP sesuai untuk pembangunan web, dan Python sesuai untuk pelbagai aplikasi seperti analisis data dan pembelajaran mesin.

    Memilih antara php dan python: panduan Memilih antara php dan python: panduan Apr 18, 2025 am 12:24 AM

    PHP sesuai untuk pembangunan web dan prototaip pesat, dan Python sesuai untuk sains data dan pembelajaran mesin. 1.Php digunakan untuk pembangunan web dinamik, dengan sintaks mudah dan sesuai untuk pembangunan pesat. 2. Python mempunyai sintaks ringkas, sesuai untuk pelbagai bidang, dan mempunyai ekosistem perpustakaan yang kuat.

    Cara menjalankan Python Kod Sublime Cara menjalankan Python Kod Sublime Apr 16, 2025 am 08:48 AM

    Untuk menjalankan kod python dalam teks luhur, anda perlu memasang plug-in python terlebih dahulu, kemudian buat fail .py dan tulis kod itu, dan akhirnya tekan Ctrl B untuk menjalankan kod, dan output akan dipaparkan dalam konsol.

    PHP dan Python: menyelam mendalam ke dalam sejarah mereka PHP dan Python: menyelam mendalam ke dalam sejarah mereka Apr 18, 2025 am 12:25 AM

    PHP berasal pada tahun 1994 dan dibangunkan oleh Rasmuslerdorf. Ia pada asalnya digunakan untuk mengesan pelawat laman web dan secara beransur-ansur berkembang menjadi bahasa skrip sisi pelayan dan digunakan secara meluas dalam pembangunan web. Python telah dibangunkan oleh Guidovan Rossum pada akhir 1980 -an dan pertama kali dikeluarkan pada tahun 1991. Ia menekankan kebolehbacaan dan kesederhanaan kod, dan sesuai untuk pengkomputeran saintifik, analisis data dan bidang lain.

    Python vs JavaScript: Keluk Pembelajaran dan Kemudahan Penggunaan Python vs JavaScript: Keluk Pembelajaran dan Kemudahan Penggunaan Apr 16, 2025 am 12:12 AM

    Python lebih sesuai untuk pemula, dengan lengkung pembelajaran yang lancar dan sintaks ringkas; JavaScript sesuai untuk pembangunan front-end, dengan lengkung pembelajaran yang curam dan sintaks yang fleksibel. 1. Sintaks Python adalah intuitif dan sesuai untuk sains data dan pembangunan back-end. 2. JavaScript adalah fleksibel dan digunakan secara meluas dalam pengaturcaraan depan dan pelayan.

    Golang vs Python: Prestasi dan Skala Golang vs Python: Prestasi dan Skala Apr 19, 2025 am 12:18 AM

    Golang lebih baik daripada Python dari segi prestasi dan skalabiliti. 1) Ciri-ciri jenis kompilasi Golang dan model konkurensi yang cekap menjadikannya berfungsi dengan baik dalam senario konvensional yang tinggi. 2) Python, sebagai bahasa yang ditafsirkan, melaksanakan perlahan -lahan, tetapi dapat mengoptimumkan prestasi melalui alat seperti Cython.

    Cara menjalankan python dengan notepad Cara menjalankan python dengan notepad Apr 16, 2025 pm 07:33 PM

    Running Python Code di Notepad memerlukan Python Executable dan NPPExec plug-in untuk dipasang. Selepas memasang Python dan menambahkan laluannya, konfigurasikan perintah "python" dan parameter "{current_directory} {file_name}" dalam plug-in nppexec untuk menjalankan kod python melalui kunci pintasan "f6" dalam notepad.

    Golang vs Python: Perbezaan dan Persamaan Utama Golang vs Python: Perbezaan dan Persamaan Utama Apr 17, 2025 am 12:15 AM

    Golang dan Python masing -masing mempunyai kelebihan mereka sendiri: Golang sesuai untuk prestasi tinggi dan pengaturcaraan serentak, sementara Python sesuai untuk sains data dan pembangunan web. Golang terkenal dengan model keserasiannya dan prestasi yang cekap, sementara Python terkenal dengan sintaks ringkas dan ekosistem perpustakaan yang kaya.

    See all articles