m0_59371898
m0_59371898
2021-06-16 19:20
采纳率: 100%
浏览 44

微信授权登录 获取用户信息

授权登录后获取微信用户信

能否获取到用户通讯录信息

 

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

5条回答 默认 最新

  • Feng_wwf
    NDSC专家-王文峯 2021-06-17 09:47
    已采纳

    可以,代码如下,望采纳,谢谢!

    <template>
      <view class="authorize-contianer">
        <div class="auth-item" @click="login">请微信授权</div>
        <div class="btn-authorize">
          <button open-type="getUserInfo" @getuserinfo="bindGetUserInfo">确认授权</button>
        </div>
        <div v-if="cancelAuth" class="refuse">请授权,否则无法进入哦~</div>
    
          <div v-if="isPone" class="alert" >
          <div class="auth">
            <div class="apply">
              <span class="">需要获取您的手机权限</span>
              <p>(请开启手机权限)</p>
            </div>
            <button class="confirm" open-type="getPhoneNumber" @getphonenumber="getPhoneNumber">确认</button>
          </div>
        </div>
      </view>
    </template>
    <script>
    import { getToken } from '@/api/main'
    export default {
      data () {
        return {
          cancelAuth: false,//判断用户是否拒绝获取信息
          newType: '',
          path: '../home/main',
          shareDetail: {},
          code: '',
          isPone: false  //用于显示获取手机权限窗口
    
        }
      },
      methods: {
          //获取手机号
        getPhoneNumber(e) {
          console.log(e)
          if (e.mp.detail.errMsg==="getPhoneNumber:ok") {
            this.isPone = false
            this.params.iv = e.mp.detail.iv
            this.params.encryptedData = e.mp.detail.encryptedData
            console.log(this.params)
            this.getTokenAsync(this.params)
          }
        },
          //调用wx.login获取code
        login() {
          let me = this
          let obj = wx.getStorageSync('USER_INFO')
          console.log(obj, 'USER_INFOUSER_INFO')
          if (obj) {
            wx.switchTab({ url: this.path })
          } else {
            wx.login({
              success (res) {
                if (res.code) {
                  me.code = res.code
                }
              }
            })
          }
        },
        // 请求后获取token
        async getTokenAsync(params) {
          let res = await getToken(params)
          if (res.success) {
            wx.setStorageSync('USER_INFO', JSON.stringify(res.data))
          	wx.switchTab({ url: this.path })
          } else {
            console.log("获取失败")
          }
        },
        //  调用用户信息授权页面
        bindGetUserInfo(e) {
          if (!this.cancelAuth) {
            this.isPone = true
          }
          wx.setStorageSync('USER_MSG', JSON.stringify(e.mp.detail.userInfo))
          console.log(e)
          if (e.mp.detail.userInfo) {
            this.params = {
              code: this.code,
              name: e.mp.detail.userInfo.nickName,
              userIcon: e.mp.detail.userInfo.avatarUrl,
            }
          } else {
            // 用户按了拒绝按钮
            this.cancelAuth = true
          }
        }
      },
      onShow () {
        this.path ='../home/main'
        this.login()
      }
    }
    </script>
    <style lang="scss">
    .authorize-contianer {
      height: 100%;
       background: #fff;
      background-size:100% 100%;
      text-align: center;
      .authorize-icon {
        padding-top: 254rpx;
        width: 200rpx;
        height: 200rpx;
        display: block;
        margin: 0 auto;
        padding-bottom: 10rpx;
      }
      .auth-item {
        margin-top:92rpx;
        font-size: 36rpx;
        line-height:40rpx;
        color:rgb(255,145,37);
        font-weight: bold;
      }
      .refuse{
        padding:18rpx 0;
        font-size:24rpx;
        width:80%;
        margin:0rpx auto;
        background:#000000d1;
        color:#fff;
        margin-top:140rpx;
        border-radius:6rpx;
      }
      .btn-authorize {
        margin: 0 auto;
        margin-top:160rpx;
        button{
          width: 80%;
          background:-webkit-linear-gradient(left,rgb(255,152,22),rgb(255,120,17));
          background:-o-linear-gradient(right,rgb(255,152,22),rgb(255,120,17));
          background:-moz-linear-gradient(right,rgb(255,152,22),rgb(255,120,17));
          background:linear-gradient(to right,rgb(255,152,22),rgb(255,120,17));
          border-radius: 40rpx;
          color:rgb(255,255,255);
          font-size: 34rpx;
          font-weight: bold;
        }
      }
      .alert{
        position: fixed;
        top: 0;
        right: 0;
        bottom: 0;
        left: 0;
        overflow: hidden;
        outline: 0;
        -webkit-overflow-scrolling: touch;
        background-color: rgb(0, 0, 0);  
        filter: alpha(opacity=60);  
        background-color: rgba(0, 0, 0, 0.6); 
        z-index: 9999;
        .auth{
          position: absolute;
          top: 50%;
          left: 50%;
          width: 80%;
          height: 340rpx;
          border-radius: 20rpx;
          transform:translate(-50%,-50%);
          background: #fff;
          display: flex;
          flex-direction: column;
          .apply{
            margin: 0rpx auto;
            padding: 60rpx 40rpx;
            flex:1;
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: space-between;
            font-size: 34rpx;
            color:rgb(34,34,34);
          
            p{
              font-size:30rpx
            }
          }
          .confirm{
            text-align: center;
            height: 100rpx;
            width: 100%;
            line-height: 100rpx;
            font-size: 34rpx;
            color:rgb(255,145,37);
          }
        }
      }
    }
    </style>
    
    
    点赞 评论
  • weixin_43681859
    答题大神 2021-06-16 21:13

    这个是获取不到的,微信在这方面有严格的把控,如果我的回答有帮助到你,麻烦点个采纳。

    点赞 评论
  • qaz1128123
    wccode 2021-06-17 10:16

    获取一时爽,举报火葬场

    点赞 评论
  • weixin_45091237
    weixin_45091237 2021-06-17 10:24

    获取不到,微信授权获取的是包括Appid在内的用户微信信息,包括用户名,住址,性别,手机号等等,不包括通讯录信息,即使是这些信息,也需要用户手动授权,无法默认或者隐藏授权。同时如果强制获取通讯录信息的话工信可能要找你喝茶了。

    点赞 评论
  • QA_Assistant
    有问必答小助手 2021-06-18 15:14

    您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

    如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

    ps: 问答会员年卡【8折】购 ,限时加赠IT实体书,即可 享受50次 有问必答服务,了解详情>>>https://t.csdnimg.cn/RW5m

    点赞 评论

相关推荐