有mac版的Fifa fifaonline4卡种3吗

4007人阅读
微信公众平台(3)
Java(132)
转自:&&(原作者的思路蛮清晰的,赞一个!)
最近由于工作需要,接触了微信公众号的开发。业务上要求绑定微信用户和系统用户,以便用户在一次绑定后能够通过系统用户的身份去使用一些功能。我关注的招行信用卡公众号实现了这个功能,所以估计还是可行的,在网上搜索了一下,发现这个问题没什么好的答案,很多都说取不到微信用户名实现不了,甚至有说实现了这个功能的应该是与微信有内部合作的。
搜索无果,遂自己动手实验,后发现其实完全可以的,看来实践才是检验真理的唯一标准,方案上也很简单,我分几点来说。
用OpenID绑定即可
微信接口中虽然没给用户的微信账号,但给了用户的OpenID,这个OpenID对一个公众号是唯一的,测试也证明不会改变,也就是说同一个微信号和同一个公众号交互,我们得到的OpenID是不会变的,因此,可以用OpenID作为微信用户的身份标识。
俗话说,没吃过猪肉还没见过猪跑。看招行信用卡公众号是如何做的,在微信里面给用户一个验证链接,用户点击链接,微信会用内嵌的浏览器打开这个链接,然后就是一般的网页登录验证界面,我们通过HTTP(S)获取用户输入的系统用户名与密码,验证通过后完成绑定。 具体如何生成链接和如何传递OpenID下面详述。
如何生成绑定链接
绑定涉及到用户的身份甚至利益,所以需要注意安全性。我们需要绑定的是OpenID和系统用户,系统用户名是用户直接在链接页面输入后通过HTTP(S)传给我们的,这没有问题。OpenID对用户来说透明,用户不会传给我们,我们也只有在用户在微信中向公众号发消息时才可获得OpenID,所以很明显,OpenID需要包含在生成的链接中,至于需不需要对OpenID作加密就看你自己了,我觉得这不重要,更为重要的是要在链接中带上签名和加上时间戳。因为我们需要确认这个链接是由我们服务端生成的,用户自己或者其他人不能够伪造出这个链接,加上时间戳是为了给这个链接一个过期时间,如果不限制过期时间,假设用户绑定后这个链接通过某种方式被别人知道,那么这个人就可以把自己的账号与用户的微信号绑定。所以我采取的方法是用OpenID、过期时间再加上一个密钥生成签名,生成签名的方法和微信服务器接口验证时的签名方法类似(密钥最好另选一个只有自己知道的)。
如何传递OpenID
有了绑定链接,用户点了绑定链接,但这只是第一步,第二步我们需要在用户在链接页面提交登录请求后进行验证,OpenID怎么传到第二步中呢?有人说了,这还不简单,在登录表单中加一个隐藏域放用户的OpenID一起提交给验证的Handler不就OK了,那我只能说很遗憾,你前面所做的安全工作都白费了,一旦A用户的OpenID泄漏,B用户就可以把自己的账号与A用户的微信号绑定了。所以永远不要相信客户端提交的东西。我的方法是当用户点击生成链接后,在链接页载入时,将OpenID存到session中,因为这个session是没法伪造的(cookie被盗除外),所以只有点击这个链接的用户的session中才会有链接中包含的OpenID。
关于微信服务器签名多说一句
大家都知道微信公众号消息接口验证时微信会向我们服务器发一个GET请求,在其中带上只有我们和微信服务器知道的签名,我们在请求处理Handler中会验证这个签名,这点大家无异议;消息接口验证通过后,微信就会把用户发的消息以POST的方式发给我们,很多人可能会在这里忽视对签名的检查,从而给恶意者伪造用户请求的机会。在微信以POST方式传递用户的消息时,仍然会将签名信息附在URL参数中,我们在处理每一个POST请求时,第一步还是得像处理消息接口验证时一样,去对URL参数中的签名作验证,只有签名验证通过后才可去取POST的信息。
绑定流程的详细描述
我在上面说了基本方法,但不够详细,导致一些新手朋友还是不清楚具体如何操作,所以我在此尝试更加详细地描述整个过程的每一步:
数据库中建立用户OpenID和系统用户的绑定关系表,初始时为空。
用户和微信交互时(self:通过点击自定义菜单ClickButton触发),你可以取到用户的OpenID。
检查数据表,如发现该OpenID没有绑定系统用户,则返回一个链接供用户在微信内嵌浏览器中打开,这个链接打开后类似于系统用户登录界面。
关键是链接的生成,链接需要带3个url参数:
1. 用户OpenID:因为你需要在绑定页面中取到是哪个微信用户想要绑定系统用户。
2. 时间戳timestamp:这是为了防止链接泄漏出去被恶意利用,具体来说就是一个你指定的过期时间,超过这个时间这个链接就失效了,用户只能再次获取。
3. 签名signature:这是为了保证此验证链接只有你才可能生成,用户及第三方均无法伪造。
签名的生成需要你有一个只有你知道的token(密钥,不要与设置在公众号里面的token相同),生成签名方法和类似。流程如下:
1. 将token、OpenID、timestamp三个参数进行字典序排序。
2. 将三个参数字符串拼接成一个字符串进行sha1加密,得到链接的signature参数。
用户打开某个绑定链接时,你首先验证链接的有效性,即按上述5.1和5.2中描述的同样的步骤得到signature与参数中的sinature对比,如果相同,则再检查链接是否超时(self:个人认为,检验是否超时作为第一步更合适,先校验签名比较合适,防止timestamp被恶意篡改),两步验证均通过,你就可以将用户的微信OpenID设置到用户的session中,然后你就可以渲染验证页面(jQuery
Mobile),让用户输入其系统用户名和密码以提交给你服务器进行验证。
在用户提交绑定验证请求后,你只需要检查session中有没有你设置的OpenID,没有自然无效,有的话就是要绑定的OpenID了,此时你可以把这个OpenID从session中删除了。然后你如果验证系统用户名和密码通过后,就把这个OpenID和系统用户绑定起来,加入到第1步中说的绑定关系表中。
PS by self &(个人愚见):这个绑定的思路和微信本身提供的OAuth2.0绑定(参考&)异曲同工,只不过这个banding关系的维护在平台业务方,而不在微信方,在平台业务方维护绑定关系在实际开发中扩展性更好,至少本人选择如斯
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:433981次
积分:5945
积分:5945
排名:第3352名
原创:138篇
转载:114篇
评论:329条
(2)(1)(1)(2)(1)(1)(1)(4)(11)(11)(12)(22)(4)(2)(1)(6)(7)(4)(6)(8)(5)(3)(4)(11)(14)(5)(1)(1)(2)(1)(2)(1)(2)(1)(2)(5)(4)(3)(3)(1)(4)(3)(5)(6)(6)(6)(8)(10)(3)(7)(1)(3)(5)(3)(1)(2)(1)一、基础知识
? 接口地址https://api./sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code? 请求参数appid:小程序的唯一标识secret:小程序的app secretjs_code:用户的登录凭证code(使用wx.login({})可获取到)grant_type:填写authorization_code? 返回参数expires_in:凭证有效时间,单位:秒openid:用户唯一标识session_key:会话密匙(考虑到应用安全,不应该在网络上传输session_key)
二、客户端原理
1、使用小程序登录接口wx.login({})获取用户的登录凭证code2、使用小程序网络请求API wx.request({})将获取用户登录凭证(code)发送至服务器示例/************************************** * config:小程序配置文件 * loginUrl:服务器地址 * code:返回参数,用户登录凭证 * wx.login({}):登录接口 * wx.request({}):网络请求API *
* 日期: **************************************/ var CONGIF=require(‘config‘);
var OBJ_APP_DATA={};
OBJ_APP_DATA[‘onLaunch‘]=function(){
wx.login({
success: (res)=&{
wx.request({
url:CONGIF.loginUrl,
code:res.code
method: ‘GET‘,
success: (res)=&{
console.log(res.data)
})}App(OBJ_APP_DATA);
三、服务端php原理
1、使用isset()函数检测客户端是否有传递code参数示例if(isset($_GET[‘code‘])){}2、使用 curl_init()函数初始化一个CURL会话,初始化成功后返回一个句柄供curl_setopt(), curl_exec(),和 curl_close() 函数使用示例$curl = curl_init();3、使用curl_setopt()设置要获取的URL地址示例$url=‘https://api./sns/jscode2session?appid=‘.$appid.‘&secret=‘.$secret.‘&js_code=‘.$code.‘&grant_type=authorization_code‘;curl_setopt($curl, CURLOPT_URL, $url);4、设置是否输出header示例curl_setopt($curl, CURLOPT_HEADER, 1);5、设置是否输出结果示例curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);6、设置是否输出结果示例curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);7、设置是否检查服务器端的证书示例curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);8、使用curl_exec()将CURL返回的结果转换成正常数据并保存到一个变量示例$data = curl_exec($curl);9、使用 curl_close() 关闭CURL会话示例curl_close($curl);
文章来源: &版权归作者所有您的位置:
关于小程序,我们看到了一个开放的微信
作者:字头社
  昨天晚上,微信揭开了外界期盼已久的“应用号”神秘面纱——小程序。这可能是今年微信最重要的产品。
  小程序这个名字取得其实有点意思。一是不落俗套,透出一股人畜无害的“技术宅”气质;二是“小”也很清楚地说明,这个产品区别于一般APP。
  微信官方公布完“小程序”相关细节之后,有不少人指出,小程序将会对大量的APP产生威胁。但从目前所公布的这些细节当中,我们可以看到微信其实正在给开发者更多在用户面前“露脸”的可能性。重点是,微信也并非自身涉足新功能,而是将自身的能力给予更多的开发者。
  1、小程序与苹果规则不会冲突
  这几年,微信受益于移动互联网的红利,成长于iOS和Android两大平台,已经是首屈一指的超级APP。虽然微信也是一款平台级应用,但也必须遵守iOS、Android系统平台对应用所要求的规则,换句话说平台拥有对所有应用的生杀大权。
  微信这种用户量巨大的产品,必然不会冒丝毫的风险去挑战苹果的规则。相信我,微信比任何人都清楚苹果的规则。
  这两年,被称为“科技界春晚”苹果发布会,腾讯系产品的露出极为频繁。比如去年苹果重量级产品Apple Watch首次发布的时候,微信就被作为重点应用在发布会上进行了演示;刚刚过去的iPhone7发布会上,腾讯安全管家也被热捧了。
  因为苹果知道,他们最大的市场在中国,而腾讯的应用拥有最大的用户群体。iOS如果抛弃微信,大量用户必然会涌向Android,这也是苹果不愿意看到的。
  所以说,腾讯和苹果双方的关系只会越来越好,任何一方都不会去挑战这一关系。平台与平台上的应用互相促进,这种关系其实已经是一个非常好的典范。
  2、微信的目的不是做应用市场
  小程序这一产品形态,并非微信首创。几年前,百度就曾经推出过轻应用,当时包括UC、豌豆荚等浏览器和应用市场,也都尝试推出过这一功能,但基本上没有一个能将这个事情做成的。
  这些产品用户量级其实都没有达到一定的层次,往往是平台单方面有激情,而开发者却没有从中捞到多少好处。当时那个市场环境,应用市场领域尚未开始或者才刚刚开始整合,起码还未出现明显的颓势,因此开发者也不会对这件事情产生兴趣,重点还是主攻应用市场。
  微信做这件事会有所不同吗?
  应该说,大环境就已经有很大的不同,现在应用市场已经整合,长尾APP露脸机会越来越少,流量越来越贵。这种情况下,开发者对于展示的需求已经达到了前所未有的迫切,从应用号推出之前就深受外界关注即可看出。
  对于微信而言,在完成订阅号、服务号的布局和用户习惯培育之后,进一步往具体应用的部分功能方向推进,加上庞大且固定的活跃用户基数,理论上还是可能成功的。
  但微信的目的不是做应用市场。目前微信已经建立了订阅号、服务号、企业号三大体系,小程序的出现,是对自己“平台级应用”的属性进一步升级与完善,从而增强用户活跃度。
  当然,腾讯未来也可能会因为这个功能而获利,比如朋友圈广告业务就又多了一大批广告客户——开发者。
  3、一个更加开放的微信
  微信开放小程序这些接口,意味着“赋能”开发者,降低开发者的成本和应用维护难度,理论上凭借微信自身巨大的流量池,可以让长尾APP的部分功能有更多的机会展示在用户面前,刷出存在感。
  这两年,微信发展迅速,极简的风格培育了极好的用户体验。微信牛逼之处,就是其实上面有很多功能,但是却让多数人觉得还是一款很轻的APP。小程序的推出,经历内测和全面开放申请,但最终会统一上线,通过用户主动搜索。
  用户主动搜索而非微信推送,这仍然是为了维护用户体验,继续克制地保持“轻”的感觉,而统一时间上线,则是体现公平的规则,开发者开发的小程序,必须有足够的价值才能获得用户主动的青睐。
  这种逻辑,其实和现在新媒体作者们有相似的逻辑。写文章的人,需要写出有意思有价值的内容才能吸引更多的读者粉丝,这两年内,我们看到越来越多有创新意义的文体也在出现。
  至于做应用的人,则需要更多考虑用户的需求,凭借微信提供的这些工具,能否做出创新的应用吸引用户的注意,就看开发者的本事了。因此,小程序的推出,某种程度上也可能会推动眼下鲜有创新的APP市场会有更多的创新。
  值得一提的是,微信推出小程序,赋能开发者更多的能力,搭建的是一个平台,而不是自己涉足各种各样的功能对开发者造成威胁。这种风格,与小马哥近年来所强调的开放、连接器、“半条命交给开发者”等概念和理论是相符合的。
  无论小程序将来如何,至少,我们看到了一个更加开放的微信。
(转载请保留)
置顶推荐热门话题大家都在看
互联网的一些事,已超50万小伙伴关注!

我要回帖

更多关于 mac口红有几个版本 的文章

 

随机推荐