欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

微信开发 限制页面只能在微信中打开 如何实现?

程序员文章站 2024-02-18 13:43:46
...
最近在做微信开发,但是一直忽略了一个问题 如何限制页面只能在微信中打开?

在PHP脚本中 可以通过判断 HTTP_USER_AGENT 来判断浏览器是否为微信内置浏览器

但今天看布丁移动下的 微车 公众平台中 很多页面限制只能在微信中打开 但是判断方式应该不是通过在脚本中判断浏览器的头信息,现请问 微车 中限制页面只能在浏览器中打开的思路是什么 ?

回复内容:

最近在做微信开发,但是一直忽略了一个问题 如何限制页面只能在微信中打开?

在PHP脚本中 可以通过判断 HTTP_USER_AGENT 来判断浏览器是否为微信内置浏览器

但今天看布丁移动下的 微车 公众平台中 很多页面限制只能在微信中打开 但是判断方式应该不是通过在脚本中判断浏览器的头信息,现请问 微车 中限制页面只能在浏览器中打开的思路是什么 ?

微信里打开navigator.userAgent会有micromessenger

微车调用了微信的OAuth2.0授权

微信有很多内置JS内置API,通过判断这些API是否存在也是可以的吧。
http://www.baidufe.com/item/f07a3be0b23b4c9606bb.html

我现在做的项目,是微信公众号的,用户点击我们网站的时候,会去微信服务器获取用户openid,如果获取不到,就说明不是微信浏览器打开.这样用户只有在微信浏览器打开才可以进系统

上面基本都回答了

1、js或程序判断,userAgent,是否包含micromessenger

2、js判断微信相关特有函数

3、调用oauth接口,如果不想用户感知的,可以调用scope=snsapi_base的方式,这个最后只能获得用户openid。scope=snsapi_userinfo方式,用户会看到一个授权页面,点击授权后,可以获得用户所有信息。

前端的话最好不要通过 ua 来判断是否是微信内置浏览器,因为太容易伪造了。
这样来判断

if( typeof WeixinJSBridge !== "undefined" ) {
  return true;
}

网页用微信打开必须要做微信oauth的网页授权吗?