微信公众号H5微信授权获取code

我是使用了cpolar内网穿透来调试的,本地不好操作,

第一部分:

1.下载安装cpolar

打开cpolar创建一个隧道

 8080为你启动的端口,改成你自己的,点击创建

2.然后再状态里面找到你刚刚创建的

 

 红色框为你的地址

3当你把这个地址复制打开的时候会提示invalid host header

vue项目到

vue.config.js 文件下 devServer加入 disableHostCheck: true, 就可以了 

devServer: {

               disableHostCheck: true, //正式环境要注释掉

}

 本人是uniapp项目要到manifest.json里面

 配置好之后关闭项目重新启动编译器就好了

第二部分:

百度搜索微信公众号测试号

 扫码登录后看到下面的页面,下翻找到下图所示点击修改

 

 这里的域名填写第一步内网穿透的地址不要前面的http,只要域名部分比如baidu.com就可以了

完成这一步之后你就可以去项目中调用了

第三步:

下面是简单的个人源码可以直接使用但是要替换appid和回调地址

<template>
    <button class="wechat-logo" @click="getWeChatCode">微信授权登录</button>
</template>

<script>
export default {
    onShow() {
        const hasWechatLogin = uni.getStorageSync('wechat_login_tag') || null;
        if(hasWechatLogin) {
            this.checkWeChatCode();
        }
    },
    methods: {
        // 重定向回来本页面检查有没有code
        checkWeChatCode() {
            let code = this.getUrlCode('code');
            console.log('我的code',code)
            if(code) {
                this.handleToLogin(code)
            }
        },
        // 正则匹配请求地址中的参数函数
        getUrlCode(name) {
            return decodeURIComponent((new RegExp('[?|&]' + name + '=' + '([^&;]+?)(&|#|;|$)').exec(location.href) ||[, ''])[1].replace(/\+/g, '%20')) || null
        },
        // 看地址中有没有code参数,如果没有code参数的话则请求微信官方的接口并获取包含code的回调链接
        getWeChatCode() {
            //用于退出登录回来不会再调一次授权登录
            uni.setStorageSync('wechat_login_tag', 'true');
                        
            const appID = '';  //公众号appID
            const callBack = ''; //回调地址 就是你的完整地址登录页
                        
            //通过微信官方接口获取code之后,会重新刷新设置的回调地址【redirect_uri】
            window.location.href = 'https://open.weixin.qq.com/connect/oauth2/authorize?appid=' +
                            appID + '&redirect_uri=' + encodeURIComponent(callBack) +
                            '&response_type=code&scope=snsapi_userinfo&state=1#wechat_redirect'
        },
        // 把后端需要的code以及其他信息调用接口传过去
        //比如调用接口loginIn
        handleToLogin(code) {
            loginIn({
                code,
            }).then(res => {
                console.log('登录成功')
                uni.redirectTo({
                    url: '/pages/index/details'
                })
            })
        }
    }        
}
</script>

 appid用刚刚测试号的appid

回调地址填写你刚刚第二步修改配置的那个

最后一步:

你在微信开发者工具,打开公众号网页

 在上方把你的第一步得到的穿透地址复制打开(这里有一个慢打开速度很慢)

点击按钮你就能在线调试微信授权登录获取code了,

恭喜你,我花了几天才明白的东西,你只看一篇文章就会了,很保姆把!!!!!

哈哈哈哈哈哈哈哈哈

  • 12
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
获取微信用户的手机号需要用户授权并且需要满足以下条件: 1. 微信用户需要在微信中绑定了手机号码 2. 开发者需要在公众平台设置中开启获取用户手机号码的权限 开发者可以通过以下步骤获取用户手机号: 1. 引导用户进入授权页,请求用户授权获取手机号。 ```html <button onclick="getPhoneNumber()">获取手机号</button> ``` 2. 在回调函数中获取加密数据和签名,将其发送到开发者的后台服务器。 ```javascript function getPhoneNumber() { wx.login({ success: function (res) { if (res.code) { wx.request({ url: 'https://example.com/api/getPhoneNumber', data: { code: res.code }, success: function (res) { var encryptedData = res.data.encryptedData; var iv = res.data.iv; var signature = res.data.signature; //将encryptedData、iv、signature发送到开发者的后台服务器进行解密 } }) } } }) } ``` 3. 在开发者的后台服务器中解密数据,获取用户手机号。 开发者可以使用开放数据解密算法对加密数据进行解密,获取用户手机号。 ```javascript var WXBizDataCrypt = require('WXBizDataCrypt'); var appId = 'wx4f4bc4dec97d474b'; var sessionKey = 'tiihtNczf5v6AKRyjwEUhQ=='; var encryptedData = 'CiyLU1Aw2KjvrjMdj8YKliAjtP4gsMZM' + 'QmRzooG2xrDcvSnxIMXFufNstNGTyaGS' + '9uT5geRa0W4oTOb1WT7fJlAC+oNPdbB+' + '3hVbJSRgv+4lGOETKUQz6OYStslQ142d' + 'NCuabNPGBzlooOmB231qMM85d2/fV6Ch' + 'evvXvQP8Hkue1poOFtnEtpyxVLW1zAo6' + '/1Xx1COxFvrc2d7UL/lmHInNlxuacJXw' + 'u0fjpXfz/YqYzBIBzD6WUfTIF9GRHpOn' + '/Hz7saL8xz+W//FRAUid1OksQaQx4CMs' + '8LOddcQhULW4ucetDf96JcR3g0gfRK4P' + 'C7E/r7Z6xNrXd2UIeorGj5Ef7b1pJAYB' + '6Y5anaHqZ9J6nKEBvB4DnNLIVWSgARns' + '/8wR2SiRS7MNACwTyrGvt9ts8p12PKFd' + 'lqYTopNHR1Vf7XjfhQlVsAJdNiKdYmYV' + 'oKlaRv85IfVunYzO0IKXsyl7JCUjCpoG' + '20f0a04COwfneQAGGwd5oa+T8yO5hzuy' + 'Db/XcxxmK01EpqOyuxINew=='; var iv = 'r7BXXKkLb8qrSNn05n0qiA=='; var pc = new WXBizDataCrypt(appId, sessionKey); var data = pc.decryptData(encryptedData, iv); console.log(data.phoneNumber); ``` 注意:解密算法代码需要开发者自己实现。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值