
最近准备试试看微信的 JSSDK
可是有一个地方不是让我很理解... 微信是需要使用 access_token 来访问的. 而 access_token 是使用 appsecret 生成的. 需要服务器保存. 2小时内有效.
我不解的是这样的好处是什么? 保证 appsecret 的安全么? 可是这个 access_token 还是明文的啊. 在 js 端可以看到的啊. 如果别人需要用你的 access_token 只要定时趴一下你的页面不就行了? 这个和直接一个key有什么区别
1 defia 2015-07-12 20:36:13 +08:00 这是你后端保存与微信服务器交互用的啊。 |
2 agate OP @defia 不是很理解, 可以具体介绍一下么? 我不理解的是 access_token 一样是明文的. 而且有 2小时 有效期. 这样不是等于一个"密码"么. |
3 tini26 2015-07-12 20:45:41 +08:00 只有你的设备能看得见的明文,对别人来说看不到,就是密文 |
4 crabRunning 2015-07-12 20:46:38 +08:00 via Android 客户端只看到自己的而已 |
5 qiayue PRO access_token 不能暴露在网页里啊,网页里(其实是js里)需要的是已经计算好的签名 signature 而签名是根据当前网页 URL 来计算的,所以别人获取到了也没意义 |
6 wy315700 2015-07-12 20:47:54 +08:00 access_token是你的服务器和微信通讯用的,不是在客户端和微信通讯用的 你不会直接在网页里用JS和微信服务器通讯吧 |
7 agate OP @qiayue 哦~~~ 我理解错了. 原来 signature 是根据 url 计算的哦. 明白了. 谢谢你的解释 @defia @crabRunning @tini26 @wy315700 谢谢大家 |
8 djyde 2015-07-12 20:55:48 +08:00 是明文,但是除非别人已经拿到了你的手机设备,否则别人不太可能远程获取到。 |
9 agate OP @djyde 是我不好... 误解了 signature 和 access_token 的区别. 明文的应该是 signature. 而且我不知道 signature 是根据 url 生成的... 但是我又有疑惑了. 那既然这样为啥不直接使用 appsecret 来生成 signature ? |
10 sivacohan PRO |
11 iyoood 2015-07-12 21:16:10 +08:00 appsecret是没有时效的 |
12 agate OP |
13 mgcnrx11 2015-07-12 21:47:07 +08:00 用了OAuth2.0协议,就继续用下去呗 |
14 zi 2015-07-13 10:24:15 +08:00 引用文档: 1、为了保密appsecrect,第三方需要一个access_token获取和刷新的中控服务器。而其他业务逻辑服务器所使用的access_token均来自于该中控服务器,不应该各自去刷新,否则会造成access_token覆盖而影响业务; 2、目前access_token的有效期通过返回的expire_in来传达,目前是7200秒之内的值。中控服务器需要根据这个有效时间提前去刷新新access_token。在刷新过程中,中控服务器对外输出的依然是老access_token,此时公众平台后台会保证在刷新短时间内,新老access_token都可用,这保证了第三方业务的平滑过渡; 3、access_token的有效时间可能会在未来有调整,所以中控服务器不仅需要内部定时主动刷新,还需要提供被动刷新access_token的接口,这样便于业务服务器在API调用获知access_token已超时的情况下,可以触发access_token的刷新流程。 ---------------------------------------------------- 业务服务器使用由中控获取的access_token比把appsecrect放在每一个的业务服务器要安全吧,就算万一中控的appsecrect泄露,只需要修改中控就可以了,不会影响到业务服务器 |
15 coolicer 2015-07-13 16:01:43 +08:00 没看到 js 可以取 access_token |