ホームページ  >  記事  >  バックエンド開発  >  PHP で WeChat スキャン コード ログインを実装する方法

PHP で WeChat スキャン コード ログインを実装する方法

王林
王林オリジナル
2021-09-23 15:02:466085ブラウズ

WeChat コード スキャン ログインを実装する

php メソッド: 1. js を介してオブジェクトをインスタンス化します; 2. html で div を定義し、QR コードを含めます; 3. $(document).ready() 内でインスタンス化するだけです。

PHP で WeChat スキャン コード ログインを実装する方法

#この記事の動作環境: Windows10 システム、php 7、thinkpad t480 コンピューター。


WeChat は私たちの日常生活に欠かせないものとなり、より多くのユーザーが WeChat および関連製品をより便利に使用できるようにするために、WeChat スキャン機能がますます普及しています。では、この機能を自分で実装したい場合はどうすればよいでしょうか?

具体的な実装コードを示す前に、まず WeChat コード スキャン ログイン プロセスを分析しましょう。

まず、ページに QR コードを表示する必要があります。QR コードには有効期限があり、無効な状態になります。一度 QR コードをスキャンしたり、一定期間スキャンしなかったりすると、 QRコードがページに表示されます。QRコードの場合、このQRコードは無効になります。 WeChat 公式 Web サイトでは、QR コードを表示する方法として 2 つの方法が提供されており、1 つはバックグラウンドでリクエストを送信して新しいページを返す方法、もう 1 つはフロントエンド js で QR コードをインスタンス化し、独自のページに埋め込む方法です。もちろん最初の方法の方が簡単で便利ですが、実際のプロジェクトではどちらの方法も使用するため、ここでは両方の方法について説明します。

1. バックグラウンドでリクエストを送信して、WeChat から返されるスキャン コード ページを取得します。

$redirect_uri="http://你的微信开放平台绑定域名下处理扫码事件的方法";
$redirect_uri=urlencode($redirect_uri);//该回调需要url编码
$appID="你的appid";
$scope="snsapi_login";//写死,微信暂时只支持这个值
//准备向微信发请求
$url = "https://open.weixin.qq.com/connect/qrconnect?appid=" . $appID."&redirect_uri=".$redirect_uri."&response_type=code&scope=".$scope."&state=STATE#wechat_redirect";
//请求返回的结果(实际上是个html的字符串)
$result = file_get_contents($url);
//替换图片的src才能显示二维码
$result = str_replace("/connect/qrcode/", "https://open.weixin.qq.com/connect/qrcode/", $result);
return $result; //返回页面

これにより、次のようなページが返され、スキャン後に $redirect_uri を呼び出します

PHP で WeChat スキャン コード ログインを実装する方法

2. 埋め込み JS 表示:

ここでは、js 側でオブジェクトをインスタンス化します。まず、次の js ファイルを タグに追加します (

<script src="http://res.wx.qq.com/connect/zh_CN/htmledition/js/wxLogin.js"></script>
)

次に、HTML で QR コードを含む div を定義します。

<div id="login_container"></div>

最後に $(document).ready() でインスタンス化します。

$(document).ready(function()
{
    var obj = new WxLogin
    ({
        id:"login_container",//div的id
        appid: "你的appid",
        scope: "snsapi_login",//写死
        redirect_uri:encodeURI("你的处理扫码事件的方法") ,
        state: "",
        style: "black",//二维码黑白风格        
        href: "https://某个域名下的css文件"
    });
});

CSS ファイルが次を指していることに注意してください。 href 内では必須です https プロトコルでのみ参照できます。それ以外の場合、ページはデフォルトのスタイルになります (比較的大きな QR コードが表示され、QR コードのサイズと位置を調整することはできません。これは非常に面倒です)。ページの最後の部分は次のようになります。ここの QR コードは約 140px しかありません:

PHP で WeChat スキャン コード ログインを実装する方法

OK、QR コードがページに表示されます。次に、大まかに話しましょうQR コードをスキャンするロジックについては、全体のプロセスは大きく 5 つのステップに分かれています:

PHP で WeChat スキャン コード ログインを実装する方法

これらの 5 つのステップを完了すると、ユーザーのすべての情報が取得されます。 QR コードをスキャンしました。その後、必要なコード ロジック (リダイレクトやログインなど) を記述するだけです。コード内の式は次のとおりです:

//回调
public function codeinfo()
{
        $code = $_GET["code"];
        $appid = "你的appid";
        $secret = "你的secret";
        if (!empty($code))  //有code
        {
            //通过code获得 access_token + openid
           $url="https://api.weixin.qq.com/sns/oauth2/access_token?appid=" . $appid
            . "&secret=" . $secret . "&code=" . $code . "&grant_type=authorization_code";
            $jsonResult = file_get_contents($url);
            $resultArray = json_decode($jsonResult, true);
            $access_token = $resultArray["access_token"];
            $openid = $resultArray["openid"];

            //通过access_token + openid 获得用户所有信息,结果全部存储在$infoArray里,后面再写自己的代码逻辑
            $infoUrl = "https://api.weixin.qq.com/sns/userinfo?access_token=" . $access_token . "&openid=" . $openid;
            $infoResult = file_get_contents($infoUrl);
            $infoArray = json_decode($infoResult, true);
     } }

上記のコードを書いた後、すでにスキャンされていると思います。このプロセスは非常に明確で、実際には、基本的には複数の WeChat インターフェイスの調整された呼び出しにすぎません。

推奨学習:

php トレーニング

以上がPHP で WeChat スキャン コード ログインを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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