亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

詳解使用uni-app開發(fā)微信小程序之登錄模塊

 更新時(shí)間:2019年05月09日 11:50:38   作者:WFaceBoss  
這篇文章主要介紹了詳解使用uni-app開發(fā)微信小程序之登錄模塊,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧

從微信小程序官方發(fā)布的公告中我們可獲知:小程序體驗(yàn)版、開發(fā)版調(diào)用 wx.getUserInfo 接口,將無法彈出授權(quán)詢問框,默認(rèn)調(diào)用失敗,需使用 <button open-type="getUserInfo"></button> 引導(dǎo)用戶主動(dòng)進(jìn)行授權(quán)操作:

1.當(dāng)用戶未授權(quán)過,調(diào)用該接口將直接報(bào)錯(cuò)

2.當(dāng)用戶授權(quán)過,可以使用該接口獲取用戶信息

但在實(shí)際開發(fā)中我們可能需要彈出授權(quán)詢問框,因此需要我們自己來寫模擬授權(quán)彈框(主要是對(duì)<buttonopen-type="getUserInfo"></button>的包裹+用戶是否是第一次授權(quán)判斷來顯示該頁面),代碼如下:

1.頁面結(jié)構(gòu)

<template>
  <view>
    <!-- #ifdef MP-WEIXIN -->
    <view v-if="isCanUse">
      <view>
        <view class='header'>
          <image src='../../static/img/wx_login.png'></image>
        </view>
        <view class='content'>
          <view>申請(qǐng)獲取以下權(quán)限</view>
          <text>獲得你的公開信息(昵稱,頭像、地區(qū)等)</text>
        </view>

        <button class='bottom' type='primary' open-type="getUserInfo" withCredentials="true" lang="zh_CN" @getuserinfo="wxGetUserInfo">
          授權(quán)登錄
        </button>
      </view>
    </view>
    <!-- #endif -->
  </view>
</template>

這里的isCanUse是用來記錄當(dāng)前用戶是否是第一次授權(quán)使用的,wx_login.png圖在底部下載獲取即可。

2.樣式

<style>
  .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;
  }
</style>

3.腳本部分

<script>
  export default {
    data() {
      return {
        SessionKey: '',
        OpenId: '',
        nickName: null,
        avatarUrl: null,
        isCanUse: uni.getStorageSync('isCanUse')||true//默認(rèn)為true
      };
    },
    methods: {
      //第一授權(quán)獲取用戶信息===》按鈕觸發(fā)
      wxGetUserInfo() {
        let _this = this;
        uni.getUserInfo({
          provider: 'weixin',
          success: function(infoRes) {
            let nickName = infoRes.userInfo.nickName; //昵稱
            let avatarUrl = infoRes.userInfo.avatarUrl; //頭像
            try {
              uni.setStorageSync('isCanUse', false);//記錄是否第一次授權(quán) false:表示不是第一次授權(quán)
              _this.updateUserInfo();
            } catch (e) {}
          },
          fail(res) {}
        });
      },

      //登錄
        login() {
        let _this = this;
        uni.showLoading({
          title: '登錄中...'
        });
       
        // 1.wx獲取登錄用戶code
        uni.login({
          provider: 'weixin',
          success: function(loginRes) {
            let code = loginRes.code;
            if (!_this.isCanUse) {
              //非第一次授權(quán)獲取用戶信息
              uni.getUserInfo({
                provider: 'weixin',
                success: function(infoRes) {
                       //獲取用戶信息后向調(diào)用信息更新方法
                  let nickName = infoRes.userInfo.nickName; //昵稱
                  let avatarUrl = infoRes.userInfo.avatarUrl; //頭像
                    _this.updateUserInfo();//調(diào)用更新信息方法
                }
              });
            }
      
            //2.將用戶登錄code傳遞到后臺(tái)置換用戶SessionKey、OpenId等信息
            uni.request({
              url: '服務(wù)器地址',
              data: {
                code: code,
              },
              method: 'GET',
              header: {
                'content-type': 'application/json'
              },
              success: (res) => {
                //openId、或SessionKdy存儲(chǔ)//隱藏loading
                uni.hideLoading();
              }
            });
          },
        });
      },
     //向后臺(tái)更新信息
      updateUserInfo() {
        let _this = this;
        uni.request({
          url:'url' ,//服務(wù)器端地址
          data: {
            appKey: this.$store.state.appKey,
            customerId: _this.customerId,
            nickName: _this.nickName,
            headUrl: _this.avatarUrl
          },
          method: 'POST',
          header: {
            'content-type': 'application/json'
          },
          success: (res) => {
            if (res.data.state == "success") {
              uni.reLaunch({//信息更新成功后跳轉(zhuǎn)到小程序首頁
                url: '/pages/index/index'
              });
            }
          }
          
        });
      }
    },
    onLoad() {//默認(rèn)加載
      this.login();
    }
  }
</script>

4.最終效果如下:

 

wx_login.png圖:

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • JavaScript樹結(jié)構(gòu)深度優(yōu)先算法

    JavaScript樹結(jié)構(gòu)深度優(yōu)先算法

    這篇文章主要介紹了JavaScript樹結(jié)構(gòu)深度優(yōu)先算法,樹結(jié)構(gòu)可以說是前端中最常見的數(shù)據(jù)結(jié)構(gòu)之一,比如說DOM樹、級(jí)聯(lián)選擇、樹形組件,更多相關(guān)內(nèi)容需要的小伙伴可以參考一下
    2022-07-07
  • 前端如何計(jì)算首屏及白屏?xí)r間代碼示例

    前端如何計(jì)算首屏及白屏?xí)r間代碼示例

    白屏?xí)r間是指用戶進(jìn)入該網(wǎng)站(比如刷新頁面、跳轉(zhuǎn)到新頁面等通過該方式)的時(shí)刻開始計(jì)算,一直到頁面內(nèi)容顯示出來之前的時(shí)間節(jié)點(diǎn),這篇文章主要給大家介紹了關(guān)于前端如何計(jì)算首屏及白屏?xí)r間的相關(guān)資料,需要的朋友可以參考下
    2024-07-07
  • 如何在vscode中使用Typescript并運(yùn)行詳解

    如何在vscode中使用Typescript并運(yùn)行詳解

    在VSCode中編寫的TypeScript代碼不能直接運(yùn)行,需要先用tsc編譯為JavaScript,然后才能運(yùn)行,下面這篇文章主要給大家介紹了關(guān)于如何在vscode中使用Typescript并運(yùn)行的相關(guān)資料,需要的朋友可以參考下
    2023-05-05
  • JavaScript DOM節(jié)點(diǎn)操作方法總結(jié)

    JavaScript DOM節(jié)點(diǎn)操作方法總結(jié)

    下面小編就為大家?guī)硪黄狫avaScript DOM節(jié)點(diǎn)操作方法總結(jié)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-08-08
  • js中通過getElementsByName訪問name集合對(duì)象的方法

    js中通過getElementsByName訪問name集合對(duì)象的方法

    下面小編就為大家?guī)硪黄猨s中通過getElementsByName訪問name集合對(duì)象的方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-10-10
  • phpwind放自動(dòng)注冊(cè)方法

    phpwind放自動(dòng)注冊(cè)方法

    phpwind放自動(dòng)注冊(cè)方法...
    2006-12-12
  • JS截取數(shù)組操作簡單示例

    JS截取數(shù)組操作簡單示例

    這篇文章主要給大家介紹了關(guān)于JS截取數(shù)組操作的相關(guān)資料,對(duì)數(shù)組的操作相信大家都不陌生,文中通過代碼示例介紹的非常詳細(xì),需要的朋友可以參考下
    2023-08-08
  • Openlayers實(shí)現(xiàn)根據(jù)半徑繪制圓形

    Openlayers實(shí)現(xiàn)根據(jù)半徑繪制圓形

    這篇文章主要介紹了利用Openlayers實(shí)現(xiàn)繪制三個(gè)圓形,繪制完成之后,三個(gè)圓心連接起來,然后標(biāo)記出每兩個(gè)圓心之間的距離,感興趣的可以了解一下
    2022-08-08
  • 獲取當(dāng)前按鈕或者h(yuǎn)tml的ID名稱實(shí)例(推薦)

    獲取當(dāng)前按鈕或者h(yuǎn)tml的ID名稱實(shí)例(推薦)

    下面小編就為大家?guī)硪黄@取當(dāng)前按鈕或者h(yuǎn)tml的ID名稱實(shí)例(推薦)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-06-06
  • 追蹤discord.js中刪除消息的用戶方法實(shí)例詳解

    追蹤discord.js中刪除消息的用戶方法實(shí)例詳解

    這篇文章主要為大家介紹了如何追蹤discord.js中刪除消息的用戶方法實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2024-01-01

最新評(píng)論