前期准备

接入微信授权

分静默授权和非静默授权两种

静默授权: scope=snsapi_base,没有弹窗,只能获取用户的openId。

非静默授权: scope=snsapi_userinfo,有弹框弹出需要用户手动点击确认授权。可以获取openId,用户的头像、昵称等

授权步骤如下:

判断URL有没有code

有是已经授权,无是未授权

未授权,跳转微信授权链接 这里采用静默授权

https://open.weixin.qq.com/connect/oauth2/authorize?appid=${DefaultConfig.appId}&redirect_uri=${url}&response_type=code&scope=${DefaultConfig.loginWay}&state=#wechat_redirect

注意: redirect_uri是授权成功,跳转的地址,微信会帮我们跳转到该链接,并且通过?的形式拼接code

本地开发测试,在测试公众号的网页授权回调配置 当前电脑的IP就行了

function login() {

let url = encodeURIComponent(DefaultConfig.redirectUriWx); // 注意一定要encodeURIComponent

window.location.href = `https://open.weixin.qq.com/connect/oauth2/authorize?appid=${DefaultConfig.appId}&redirect_uri=${url}&response_type=code&scope=${DefaultConfig.loginWay}&state=#wechat_redirect`

}

跳转url.jpg

实现微信分享

1、后端需要实现对签名的获取

2、前端在页面初始化完毕的时候加载微信sdk的配置就行了

// 请求后端拿到签名

let wxConfig = await getWXSignature(encodeURIComponent(window.location.href.split('#')[0]))

let shareInfo = await getShareInfo()

// 更新配置

wx.config({

debug: false,

appId: DefaultConfig.appId,

timestamp: wxConfig.data.data.timestamp,

nonceStr: wxConfig.data.data.noncestr,

signature: wxConfig.data.data.signature,

jsApiList: [

'updateAppMessageShareData', // 分享给朋友

'updateTimelineShareData' // 朋友圈

]

});

wx.error(() => {

// console.log(66644)

})

wx.ready(function () { //需在用户可能点击分享按钮前就先调用

wx.updateAppMessageShareData({

title: shareInfo.data.data.title, // 分享标题

desc: shareInfo.data.data.desc, // 分享描述

link: DefaultConfig.shareLink, // 分享链接,该链接域名或路径必须与当前页面对应的公众号JS安全域名一致

imgUrl: shareInfo.data.data.imageUrl, // 分享图标

success: function () {

}

})

wx.updateTimelineShareData({

title: shareInfo.data.data.title,

link: DefaultConfig.shareLink,

imgUrl: shareInfo.data.data.imageUrl,

success: function () {

}

})

});

在测试公众号的网页的js接口安全域名配置如下

域名.jpg

线上配置 贴图

online.jpg

跳转到小程序

页面可投放到小程序(具体咋弄没研究过)

项目有个购买链接,如果是微信分享打开就跳转到H5购买页,小程序打开就直接跳转小程序购买页

// 小程序环境

export function isMiniProgram() {

let win: any = window

return (navigator.userAgent.match(/micromessenger/i) && navigator.userAgent.match(/miniprogram/i)) || win.__wxjs_environment === 'miniprogram';

}

// iPhone环境

export function isIPhone() {

let userAgent = window.navigator.userAgent

return userAgent.includes('iPhone') && /MicroMessenger/i.test(userAgent)

}

// ==========================================

// 判断是否是小程序环境

if (isMiniProgram()) {

// 具体地址和链接形式,找负责小程序的相关同志去要

let url = `/main/webview/index?link=${encodeURIComponent(购买链接)}`

// 跳转主要是这个api

wx.miniProgram.navigateTo({url})

} else {

window.location.href = 购买链接

}

错误处理

63002,invalid signature

先把后端返回来的签名复制到微信 JS 接口签名校验工具,看看后端生成的签名是否正确

仔细检查一下js接口安全域名是不是配对了

比如,不需要带http https 、 测试开发账号配置没有加自己的端口号等错误

the permission value is offline verifying

表现是分享的链接 图片都没起效果

官网上说 access_token的有效期目前为2个小时,需定时刷新, 有可能是后端忘了刷新导致token失效

或者 后端提早刷新了导致前一个分享出错(等2个小时就好了....)

微信首页登录html页面,H5页面接入微信授权登录和分享相关推荐

  1. H5静态页面跳转微信小程序;从外部浏览器,点击H5链接跳转打开微信小程序;以及在微信内直接点击H5链接打开微信小程序;

    参考链接 需求:从外部浏览器,点击H5链接跳转打开微信小程序:以及在微信内直接点击H5链接打开微信小程序: 步骤1: 小程序开发需要使用云开发创建项目,使用云开发生成的项目会自带云函数文件夹: 步骤2 ...

  2. 【微信小程序】微信小程序跳转H5页面的实现思路与方案

    需求简述 当前项目的主流程采用H5的方式编写. 在一些渠道的营销推广活动中,并不能直接跳转到网页,但可以跳转到微信小程序. 于是希望通过微信小程序,间接实现跳转H5页面的需求. 方法简述 有两种解决方 ...

  3. 微信小程序web-view 外部引用h5页面调用摄像头录制视频 配有提示音

    微信小程序web-view 外部引用h5页面调用摄像头录制视频 配有提示音 1.目前的需求是什么 2.都踩了那些坑 1.小程序 2.h5语音提示 3.语音合成声音录制不进去,ios有时候是麦克风,有时 ...

  4. 通过微信公众号跳转H5页面领取现金红包

    通过微信公众号跳转H5页面领取现金红包 项目目的 通过公司微信公众号领取现金奖励 面向对象 公司内部员工 产品逻辑: 1.在微信公众号底部栏加一项"领取奖励",点击"领取 ...

  5. H5 实现公众号授权登录

    H5 实现公众号授权登录 1. 开发者在微信公众平台申请开发者账号,并获取开发者ID和AppSecret. 2. 开发者在微信公众平台设置授权回调页面域名,并获取授权域名. 3. 开发者在H5网页中引 ...

  6. 【微信小程序】关于H5跳转微信小程序、微信小程序跳转H5、微信小程序跳转微信小程序的实现方法

    0 说明 业务提出需求,要实现H5跳转微信小程序的需求,在浏览器.微信环境下,都能通过H5跳转进入小程序. 另外,本文也将微信小程序跳转到H5,以及微信小程序跳转到微信小程序的方法进行汇总. 对于,微 ...

  7. 第三方接入支付宝授权登录(支付宝新建应用没有公钥和私钥)问题

    由于最近有个需求,需要做第三方的接入支付宝授权登录功能,特此记录下.          百度上很多的接入代码,在此的代码其实和他们差不多,差别在于支付宝官方吧原来的秘钥方式换了,有些同学可能找不到或者 ...

  8. 微信公众号开发之H5页面跳转到指定的小程序

    前言: 最近公司有一个这样的需要,需要从我们在现有的公众号H5页面中加一个跳转到第三方小程序的按钮.之前只知道小程序之间是可以相互跳转的,今天查阅了下微信开发文档原来现在H5网页也支持小程序之间的跳转 ...

  9. 微信小程序内嵌H5页面实现微信支付

    背景: 在微信H5页面已经实现了微信JSAPI的网页支付,老板要求把整个业务线快速转移到微信小程序中,作为懒惰的程序员来说,直接把页面嵌套到小程序不就行了.说干就干,在小程序中设置好基本信息后,一预览 ...

最新文章

  1. python要学多久才可以去找工作-Python学到什么程度才可以去找工作?掌握这4点足够了!...
  2. C#中通过list的GetRange方法对list进行按执行长度截取并拆分
  3. 《Android App开发入门:使用Android Studio 2.X开发环境》——1-2 在计算机的仿真器上执行 App...
  4. 【学术】60%学者反映实验无法复现?Nature给出五招!
  5. N秒钟后自动跳转的html页面,javascript
  6. 20145237 《信息安全系统设计基础》第2周学习总结
  7. mysql抖动可能的原因,12 | 为什么我的MySQL会“抖”一下?
  8. 怎么在linux上修改mysql端口映射_如何在Linux中更改默认的MySQL / MariaDB端口
  9. 前魅族科技高级副总裁李楠:iPhone 11的工业设计完全崩盘
  10. 荣耀 Magicbook Pro 锐龙版搭载深度操作系统桌面版
  11. 基本Linux命令的用法
  12. Linux中的报错命令,Linux学习教程-Linux下命令的一些异常情况
  13. 利用多线程提高程序性能(for Android)
  14. Lnmp架构之PHP
  15. 分享Silverlight/WPF/Windows Phone/HTML5一周学习导读(1月16日-2月5日)
  16. opencv调取摄像头
  17. 57、RapidJson存储Base64数据和空间释放
  18. openCV实践项目:图片文本检测
  19. 成都链安科技CEO 创始人杨霞:解决智能合约的安全问题,形式化验证是个“利器”!
  20. 【CVE】CVE-2015-5254:ActiveMQ 反序列化漏洞利用

热门文章

  1. 服务器无法显示url,遇到“您所请求的网址(URL)无法获取”的解决办法
  2. MySQL高级篇——日志
  3. 钱多多的程序猿的2020大计划
  4. 双剑合璧保障数据库安全
  5. ⼩程序(微信)【面试】
  6. C4D 克隆 学习笔记
  7. 广九客运段铁路“姐妹花”春运真情服务获旅客点赞
  8. VBA批量OCR识别提取身份证照片信息_白描网页版 - 高效准确且免费的OCR文字识别工具...
  9. aria2c: command not found
  10. 贫民窟里的WPF系列讲座(二)