目次
はじめに
注意事项" >注意事项
实操步骤
ホームページ バックエンド開発 Python チュートリアル Django がソーシャル認証を使用して WeChat サードパーティ Web サイトに QR コード ログインを実装する方法の紹介

Django がソーシャル認証を使用して WeChat サードパーティ Web サイトに QR コード ログインを実装する方法の紹介

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

はじめに

新しい公式ウェブサイトの作成をウェブ会社に依頼した際、サードパーティ アカウントによるログイン機能を予定していましたが、一部のオープン プラットフォームでは申請手続きが煩雑でした。当時(特に WeChat オープンプラットフォーム)、私は先延ばしにし続け、最近では関連機能を自分で追加することしかできませんでした。 第三方账号的登录功能,但由于当时的一些开放平台申请步骤比较繁琐(尤其是微信开放平台),所以一直拖延着,到了最近只能自己添加相关的功能。

由于是刚接触<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
    ログイン後にコピー
  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',
       )
    ログイン後にコピー
  • 微信开放平台应用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
    ログイン後にコピー
  • 配置完之后,运行你的网站,使用 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
    ログイン後にコピー

    如上需要的参数为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
    ログイン後にコピー

    打开这个文件,找到里面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
    ログイン後にコピー

    params字典里,添加一个scope

    私は <a href="http://www.php.cn/wiki/1514.html" target="_blank">Python</a> を初めて使用するため、 Django を見つけました。ビデオと学習教材練習し、MVT 構造 などをゆっくりと理解しました。Baidu は、サードパーティのログインに関する 2 つの非常に役立つ記事を見つけて、そこから多くのことを学びました。 1. Python は WeChat サードパーティ Web サイトのスキャン コード ログイン (Django) を実装します。
    2. django-social-auth を使用して中国のソーシャル ネットワーキング サイト (QQ、Weibo、Douban、Baidu、Renren、WeChat) にログインします。 )

    が実装されています QQ と Weibo にログインするとき、social-auth を使用してサードパーティ ログインを実現するのは非常に簡単、便利、直接的で完璧であることを深く認識しました。 WeChat を見つけました。同じ方法で実装する方法 (上の 2 番目の記事でも言及されていませんでした)。Weixin のコンテンツは social-auth の解釈ドキュメントに見つかりませんでした。公式 Web サイトにはすでに対応する User データ テーブルとサードパーティの UserSocialAuth データ グリッドが非常に標準化されているため、上記の最初の方法を使用して実装した後、 social-auth に戻ってデータベースを保存する方法を学びたかったときに、ユーザー データ テーブルの追加と変更に苦労しました。 、social-back<a href="http://www.php.cn/%20wiki/1048.html" target="_blank">end</a>s で見つけました Weixin.py ということは、WeChat をサポートできるということではないでしょうか?
  • メモ

    🎜
      🎜WeChat オープン プラットフォーム 申請とアクティベーションには、多くの認証情報の提出と、目標金額の \300 年間認証料金は公式アカウントやサービスアカウントなどとは異なります。アドレス: http://open.weixin.qq.com🎜🎜
    • 🎜 認定に合格したら、対応する Web アプリケーションを追加し、承認コールバック ドメイン の入力に注意して、 Web サイトのメイン ドメイン名。たとえば、www.zzmxy.com/login/wechat と書くことはできません。www.zzmxy.com のみを書く必要があります (いいえ) http または https) を追加する必要があります。そうしないと、後続の問題はすべて re<a href="http://www.php.cn/wiki/1275.html" target="_blank">ディレクトリ</a>になります。 ect_uri パラメータ エラー!🎜 🎜
    🎜🎜実践的な手順🎜🎜
    1. 🎜インストールsocial-auth:
      公式 Web サイトでは python-social-auth を使用しているため==0.2.12、ソース コードをダウンロードした後、social-backends にも Weixin.py があることがわかりました。これは、それが利用可能であることを証明しています。 ; 🎜
      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
      ログイン後にコピー
      🎜
    2. 🎜social-auth 構成: 🎜🎜
      • 🎜SOCIAL_AUTH_PIPELINE構成: を参照してください。上記の 2 番目の記事の執筆に 🎜🎜🎜AUTHENTICATION_BACKENDS 設定: 🎜rrreee🎜
      • 🎜WeChat オープン プラットフォーム アプリケーション APPIDSECRET 設定: 🎜rrreee🎜
    3. 🎜 設定後、Web サイトを実行し、www.domain name.com/login/weixin を使用してアクセスして対応するページを開きますが、エラーは見つかりましたか: Scope パラメータが間違っているか、Scope 権限がありません。実際の操作中に、social-auth によって自動的に生成された QR コード アクセス リンクに が欠落していることがわかりました。 scope パラメータ、および WeChat 公式 指定された QR コード アクセス リンクは次のとおりです: 🎜rrreee🎜上記の必須パラメータは 5 です。state は省略できますが、scope は必須であり、Web ページの承認されたアクセスの場合、scope スコープ パラメータは固定値ですscope=sns<a href="http://www.php.cn/js/js-%20weixinapp-api.html" target="_blank">api</a>_login、この場合、このパラメータ値を social-auth のソース コードに追加する必要があります。実際の site-packages インストール パスに従って、/social/backends/weixin.py ファイルを見つけます。たとえば、VirtualEnv を使用して作成したパスです。 code> は: 🎜rrreee🎜 このファイルを開いて、<code>def auth_params() の内容を見つけます (元のテキスト): 🎜rrreee🎜 params 辞書に、 を追加します>scope パラメーター 以上です。変更は次のとおりです: 🎜rrreee🎜 変更を保存した後、プロジェクトを再実行し、再度 www.domain name.com/login/weixin にアクセスして効果を確認してください。 🎜🎜🎜🎜🎜

    以上がDjango がソーシャル認証を使用して WeChat サードパーティ Web サイトに QR コード ログインを実装する方法の紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

    このウェブサイトの声明
    この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

    ホットAIツール

    Undresser.AI Undress

    Undresser.AI Undress

    リアルなヌード写真を作成する AI 搭載アプリ

    AI Clothes Remover

    AI Clothes Remover

    写真から衣服を削除するオンライン AI ツール。

    Undress AI Tool

    Undress AI Tool

    脱衣画像を無料で

    Clothoff.io

    Clothoff.io

    AI衣類リムーバー

    Video Face Swap

    Video Face Swap

    完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

    ホットツール

    メモ帳++7.3.1

    メモ帳++7.3.1

    使いやすく無料のコードエディター

    SublimeText3 中国語版

    SublimeText3 中国語版

    中国語版、とても使いやすい

    ゼンドスタジオ 13.0.1

    ゼンドスタジオ 13.0.1

    強力な PHP 統合開発環境

    ドリームウィーバー CS6

    ドリームウィーバー CS6

    ビジュアル Web 開発ツール

    SublimeText3 Mac版

    SublimeText3 Mac版

    神レベルのコード編集ソフト(SublimeText3)

    PHPおよびPython:さまざまなパラダイムが説明されています PHPおよびPython:さまざまなパラダイムが説明されています Apr 18, 2025 am 12:26 AM

    PHPは主に手順プログラミングですが、オブジェクト指向プログラミング(OOP)もサポートしています。 Pythonは、OOP、機能、手続き上のプログラミングなど、さまざまなパラダイムをサポートしています。 PHPはWeb開発に適しており、Pythonはデータ分析や機械学習などのさまざまなアプリケーションに適しています。

    Python vs. JavaScript:学習曲線と使いやすさ Python vs. JavaScript:学習曲線と使いやすさ Apr 16, 2025 am 12:12 AM

    Pythonは、スムーズな学習曲線と簡潔な構文を備えた初心者により適しています。 JavaScriptは、急な学習曲線と柔軟な構文を備えたフロントエンド開発に適しています。 1。Python構文は直感的で、データサイエンスやバックエンド開発に適しています。 2。JavaScriptは柔軟で、フロントエンドおよびサーバー側のプログラミングで広く使用されています。

    PHPとPythonの選択:ガイド PHPとPythonの選択:ガイド Apr 18, 2025 am 12:24 AM

    PHPはWeb開発と迅速なプロトタイピングに適しており、Pythonはデータサイエンスと機械学習に適しています。 1.PHPは、単純な構文と迅速な開発に適した動的なWeb開発に使用されます。 2。Pythonには簡潔な構文があり、複数のフィールドに適しており、強力なライブラリエコシステムがあります。

    Windows 8でコードを実行できます Windows 8でコードを実行できます Apr 15, 2025 pm 07:24 PM

    VSコードはWindows 8で実行できますが、エクスペリエンスは大きくない場合があります。まず、システムが最新のパッチに更新されていることを確認してから、システムアーキテクチャに一致するVSコードインストールパッケージをダウンロードして、プロンプトとしてインストールします。インストール後、一部の拡張機能はWindows 8と互換性があり、代替拡張機能を探すか、仮想マシンで新しいWindowsシステムを使用する必要があることに注意してください。必要な拡張機能をインストールして、適切に動作するかどうかを確認します。 Windows 8ではVSコードは実行可能ですが、開発エクスペリエンスとセキュリティを向上させるために、新しいWindowsシステムにアップグレードすることをお勧めします。

    PHPとPython:彼らの歴史を深く掘り下げます PHPとPython:彼らの歴史を深く掘り下げます Apr 18, 2025 am 12:25 AM

    PHPは1994年に発信され、Rasmuslerdorfによって開発されました。もともとはウェブサイトの訪問者を追跡するために使用され、サーバー側のスクリプト言語に徐々に進化し、Web開発で広く使用されていました。 Pythonは、1980年代後半にGuidovan Rossumによって開発され、1991年に最初にリリースされました。コードの読みやすさとシンプルさを強調し、科学的コンピューティング、データ分析、その他の分野に適しています。

    Visual StudioコードはPythonで使用できますか Visual StudioコードはPythonで使用できますか Apr 15, 2025 pm 08:18 PM

    VSコードはPythonの書き込みに使用でき、Pythonアプリケーションを開発するための理想的なツールになる多くの機能を提供できます。ユーザーは以下を可能にします。Python拡張機能をインストールして、コードの完了、構文の強調表示、デバッグなどの関数を取得できます。デバッガーを使用して、コードを段階的に追跡し、エラーを見つけて修正します。バージョンコントロールのためにGitを統合します。コードフォーマットツールを使用して、コードの一貫性を維持します。糸くずツールを使用して、事前に潜在的な問題を発見します。

    ターミナルVSCODEでプログラムを実行する方法 ターミナルVSCODEでプログラムを実行する方法 Apr 15, 2025 pm 06:42 PM

    VSコードでは、次の手順を通じて端末でプログラムを実行できます。コードを準備し、統合端子を開き、コードディレクトリが端末作業ディレクトリと一致していることを確認します。プログラミング言語(pythonのpython your_file_name.pyなど)に従って実行コマンドを選択して、それが正常に実行されるかどうかを確認し、エラーを解決します。デバッガーを使用して、デバッグ効率を向上させます。

    VSCODE拡張機能は悪意がありますか? VSCODE拡張機能は悪意がありますか? Apr 15, 2025 pm 07:57 PM

    VSコード拡張機能は、悪意のあるコードの隠れ、脆弱性の活用、合法的な拡張機能としての自慰行為など、悪意のあるリスクを引き起こします。悪意のある拡張機能を識別する方法には、パブリッシャーのチェック、コメントの読み取り、コードのチェック、およびインストールに注意してください。セキュリティ対策には、セキュリティ認識、良好な習慣、定期的な更新、ウイルス対策ソフトウェアも含まれます。

    See all articles