微信页面登录授权和分享那些事

微信现在在我们的生活中已经是必须品了,很多公司都会基于微信做很多的推广活动,就例如 投票吧,一个页面分享出去让好友来帮忙投票,为了保证投票的准确性往往需要投票先登录自己的微信号完成登录授权后再进行投票,保证 一个用户只能投票一次,这里就要涉及到微信的网页登录和授权和分享,关于分享主要是分享时的链接/标题/描述文字/分享图标我们可以自定义,因为如果你不配置微信分享分享就是你当前页的信息,虽然微信提供了js(http://res.wx.qq.com/open/js/jweixin-1.0.0.js)来帮助我们完成这些事,但是其中的一些小细节还是存在一些个坑的,


1.平台   

微信公众平台 :针对公众号的,公众号里推文的设置,消息提醒,都在这里操作 http://mp.weixin.qq.com/wiki/home/index.html,负责网页的登录

微信开放平台  :针对应用的,如果你是个APP开发者现在想使用微信登录,这时候你用的是开放平台,在这里你申请自己的应用的信息,AppID和AppSecret,还有就是支付权限也在这里申请  负责应用的登录

2.微信登录

在你的页面中加入如下代码就可以调用微信的授权页面

/******
 * 微信公众号 登录验证,需要用户自己授权
 * redirect_uri 用户授权后的回调链接 只能是域名方式
 * state 为了我们自己做校验用的,这个数当授权成功后微信会给我们传回来,使用随机数就可以
 */
function weiChatLogin(redirect_uri,state){
	//回调链接一定要惊醒urlencode编码
	redirect_uri=encodeURIComponent(redirect_uri);  
	window.location.href = "https://open.weixin.qq.com/connect/oauth2/authorize?appid=XXXX&redirect_uri="+redirect_uri+"&response_type=code&scope=snsapi_userinfo&state="+state+"#wechat_redirect";
}

这里的appid用的可以公共平台的appid哦,在授权成功后微信会在回调链接中自动拼接code=CODE&state=state  ,code就是微信的此次授权凭证,根据它我们就可以获取登陆者的个人信息了,state就是我们传过去的那个,不会改变

看起来很简单吧,其实还需要一步配置哦


点开修改


这里设置的域名  不包括 http://  ,也不能包含ip,这个域名哪里用到嘞,就是上面方法中的redirect_uri参数,这个参数的域名没跑了就只能是这个aa.bb了,用其他的对不起授权不了,

ps :如果需要在多公众号、移动应用之间做用户共通,则需前往微信开放平台,将这些公众号和应用绑定到一个开放平台账号下


绑定之前 在你的公众号平台里要做好安全设置,不然绑定不了的,


3.微信分享

1.官方的js=JDK使用说明文档:http://mp.weixin.qq.com/wiki/7/aaa137b55fb2e0456bf8dd9148dd613f.html 


微信需要我们在自己的服务器上来获取必要的签名凭证,

1.https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid="+appid+"&secret="+secret

获得access_token,需啊说明的是 appid和secret用的是公共平台的你们自己的应用的

2.用1中的access_token来获取ticket,方法:https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token="+access_token + "&type=jsapi

3.然后将参数拼装成字符串进行签名:String nStr = "jsapi_ticket="+jsapi_ticket+"&noncestr="+nonceStr + "&timestamp="+timestamp+"&url="+surl;

签名算法,微信官方提供的demo中有

4.关于 surl的说明 含义是 当前页面的完整链接,但是有一种情况就是 我们通过后台去跳转的页面,例如 http://xxx/test/?id=123 跳转到 bb.html,此时在bb.html中链接会变            成http://xxx/test.html?id=123,可能是微信自己补充的后缀吧,这这个地方呗坑了好久,伤心...

           最简单的就是 用js来查看下本页的完整链接  ,

      alert(window.location.href)//查看本页的完整url

 5.1和2的方法每天有请求次数的限制,所以我们的服务器要最好缓存,一般一个小时就够

//在配置微信分享时 需要用到调用服务器进行授权处理,会用到当前页面的链接
//这一步如果使用的是window.location.href这种方式得到的当前页链接就一定要encodeURIComponent(),不然,2次分享以后,自定义信息将会消失



不知道为何 腾讯这么大的公司会埋这么多坑,写文档和demo的人 工资没给够吧


有一些注意事项:1.一个页面一定要注册一次,2.签名一定要对,不然其他的设置都没用





    

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值