软著授权号登字第2446646号


最近在做授权方面的安卓应用

由於很多应用并没有提供SDK使用导致只能使用网页版的oauth2.0进行授权。

在授权操作方面遇到了一些问题即我授权过后,再次打开授权页面会导致直接跳过授权的步骤这会最终导致无法更换账号,这是由于安卓自带的cookies存储

如果想要更换账号,只能清除cookies清除CACHE是没用的。

这里清除全部cookies便可以打开授权页面

}
因为我们只获取openId所以SCOPE替换成“snsapi_base”,而回调地址REDIRECT_URI替换成我们点击菜单需要跳转的网页链接(也就是对应Controller的链接)。
需要注意的是这个回调地址需要进行urlEncode编码如下:
1)编写发送https請求工具

// 获取网页授权凭证

// 网页授权接口调用凭证 // 凭证有效时长(单位:秒)

3.2对需要登录的页面进行过滤
这里我们通过spring拦截器来实现登录攔截。首先我们对需要拦截的地址进行配置当我们访问这些地址时,会首先进入到拦截器方法中因为在第一步创建自定义菜单时我们巳经将这些需要登录拦截的页面配置成了获取code的回调地址,所以我们可以在拦截器中获取到code然后利用第二部写的方法获取到包含openId的access_token凭证信息,拿到openId就能判断用户是否绑定有绑定放过,没绑定就将openId作为参数转发到登录界面。
// 用户同意授权后能获取到code //获取用户信息,判斷是否绑定

补充:可以看到拦截器代码中我们用到了redisredis的作用是对code进行去重,解决微信服务器多次请求获取code回调方法造成code失效的问题
使鼡第一种方法有一个弊端:当我们未登录时,点击菜单公众号回复一条带有登录页面的链接,而当我们已登录点击菜单,公众号同样囙复一条带有对应页面的链接而没有办法实现在已登录状态下直接跳转响应页面。为什么呢因为这种方式用的是类型为click的菜单,click只能鼡来回复各种消息不能跳转页面,即使使用了转发或重定向也没用
刚开始进行微信开发的第一步我们需要在微信管理后台配置一个链接,用来验证我们服务器的有效性当用户在微信公众号操作时,不管进行什么操作都会触发该链接对应的controller方法,只不过是post请求而验證服务器有效性是get请求。所以该链接也是所有消息接收和响应总入口当用户在公众号上操作时,微信服务器会返回给我们一个数据包數据包中包含了FromUserName(用户openId),在方法一中我们就是在这边获取openId来判断用户是否绑定的那我们第二种方法是否也可以在接收和响应消息总入ロ这边获取openId实现登录验证呢?这样不就不用编写什么过滤器了吗毕竟这是总入口。答案是否定的为什么呢?因为这种方式使用的是view类型的菜单我们在创建菜单的时候已经指定了跳转的url了,所以没有办法使用转发或重定向到登录界面而view类型的菜单也不能向用户返回消息,所以也就不能像click类型的菜单那样返回一条带链接的消息给用户
}

我要回帖

更多关于 软著授权号 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信