微信页面登录、授权、分享

关于分享主要是分享时的链接、标题、描述文字、分享图标,这些信息不配置的话分享的就是当前页面的信息

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.locaton"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次分享以后,自定义信息将会消失