WeChatアプレットの認証ログインを実装する

coldplay.xixi
リリース: 2021-05-18 10:50:27
転載
7367 人が閲覧しました

WeChatアプレットの認証ログインを実装する

前書き: WeChat は getUserInfo インターフェイスを正式に変更したため、WeChat アプレットに入った直後に認証ウィンドウをポップアップ表示することはできなくなりました。ボタンを介してのみ認証ウィンドウをトリガーできます。

1. 実装のアイデア

ユーザーがクリックできるように WeChat 認証ログイン ページを作成します。これは、ボタン コンポーネントを通じて getUserInof インターフェイスをトリガーすることを意味します。ユーザーがWeChatアプレットに入ると、ユーザーが許可されているかどうかが判定され、許可されていない場合は、以下の「インターフェース紹介」の最初の画面が表示され、許可された操作が可能になります。

がすでに許可されている場合は、このページを直接スキップして、ホームページにアクセスしてください。

#関連する無料学習の推奨事項:

WeChat ミニ プログラム開発2. インターフェイスの概要

3. ソースコード

login.wxml

<view wx:if="{{canIUse}}">
    <view class=&#39;header&#39;>
        <image src=&#39;/images/wx_login.png&#39;></image>
    </view>
 
    <view class=&#39;content&#39;>
        <view>申请获取以下权限</view>
        <text>获得你的公开信息(昵称,头像等)</text>
    </view>
 
    <button class=&#39;bottom&#39; type=&#39;primary&#39; open-type="getUserInfo" lang="zh_CN" bindgetuserinfo="bindGetUserInfo">
        授权登录
    </button>
</view>
 
<view wx:else>请升级微信版本</view>
ログイン後にコピー

login.wcss

.header {
    margin: 90rpx 0 90rpx 50rpx;
    border-bottom: 1px solid #ccc;
    text-align: center;
    width: 650rpx;
    height: 300rpx;
    line-height: 450rpx;
}
 
.header image {
    width: 200rpx;
    height: 200rpx;
}
 
.content {
    margin-left: 50rpx;
    margin-bottom: 90rpx;
}
 
.content text {
    display: block;
    color: #9d9d9d;
    margin-top: 40rpx;
}
 
.bottom {
    border-radius: 80rpx;
    margin: 70rpx 50rpx;
    font-size: 35rpx;
}
ログイン後にコピー

login.json

{

"navigationBarTitleText": "授权登录"

}
ログイン後にコピー

login.js

コードの wx.request は、プロジェクトとバックグラウンド間のやり取りであり、直接削除できます。

変更する必要があるもの:

wx.switchTab インターフェイスの url 属性を入力することを忘れないでください。これは、認証が成功した後にジャンプするページのパスです。私のホームページはtarBar ページなので、ここでは

wx.switchTab を使用します。tarBar ページでない場合は、wx.navigateTo と wx.reirecTo を使用してジャンプできます。

Page({
    data: {
        //判断小程序的API,回调,参数,组件等是否在当前版本可用。
        canIUse: wx.canIUse(&#39;button.open-type.getUserInfo&#39;)
    },
    onLoad: function () {
        var that = this;
        // 查看是否授权
        wx.getSetting({
            success: function (res) {
                if (res.authSetting[&#39;scope.userInfo&#39;]) {
                    wx.getUserInfo({
                        success: function (res) {
                            //从数据库获取用户信息
                            that.queryUsreInfo();
                            //用户已经授权过
                            wx.switchTab({
                                url: &#39;&#39;
                            })
                        }
                    });
                }
            }
        })
    },
    bindGetUserInfo: function (e) {
        if (e.detail.userInfo) {
            //用户按了允许授权按钮
            var that = this;
            //插入登录的用户的相关信息到数据库
            wx.request({
                url: getApp().globalData.urlPath + &#39;hstc_interface/insert_user&#39;,
                data: {
                    openid: getApp().globalData.openid,
                    nickName: e.detail.userInfo.nickName,
                    avatarUrl: e.detail.userInfo.avatarUrl,
                    province:e.detail.userInfo.province,
                    city: e.detail.userInfo.city
                },
                header: {
                    &#39;content-type&#39;: &#39;application/json&#39;
                },
                success: function (res) {
                    //从数据库获取用户信息
                    that.queryUsreInfo();
                    console.log("插入小程序登录用户信息成功!");
                }
            });
            //授权成功后,跳转进入小程序首页
            wx.switchTab({
                url: &#39;&#39;  
            })
        } else {
            //用户按了拒绝按钮
            wx.showModal({
                title:&#39;警告&#39;,
                content:&#39;您点击了拒绝授权,将无法进入小程序,请授权之后再进入!!!&#39;,
                showCancel:false,
                confirmText:&#39;返回授权&#39;,
                success:function(res){
                    if (res.confirm) {
                        console.log(&#39;用户点击了“返回授权”&#39;)
                    } 
                }
            })
        }
    },
    //获取用户信息接口
    queryUsreInfo: function () {
        wx.request({
            url: getApp().globalData.urlPath + &#39;hstc_interface/queryByOpenid&#39;,
            data: {
                openid: getApp().globalData.openid
            },
            header: {
                &#39;content-type&#39;: &#39;application/json&#39;
            },
            success: function (res) {
                console.log(res.data);
                getApp().globalData.userInfo = res.data;
            }
        });
    },
    
})
ログイン後にコピー

関連無料の学習に関する推奨事項:

WeChat ミニ プログラム開発チュートリアル

以上がWeChatアプレットの認証ログインを実装するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:csdn.net
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!