请教大家一个关于微信网页授权登录的问题

yiyide266 发布于 2015/10/19 11:40
阅读 35K+
收藏 0

有这方面开发经验的大神没?我一直搞不懂这个问题,就是微信网页授权登录每次都要取得回调code来换取access_token才可以获知用户的openid,而且还要是在一个非常理想的状态下,如图

在用户授权一次之后,如何做到用户第二次打开应用(access_token还没过期)的情况下不刷新access_token?(我想过通过用户第一次授权后,将获取的access_token保存到数据库,然后通过保存在微信内置浏览器的cookie来找到用户保存的access_token,但是这样有一个问题,微信内置浏览器的cookie在关闭微信后会消失,当cookie消失后就没法根据唯一值来判断用户是谁了,而这时如果授权还没过期,微信不会再跳转到授权页面,而是跳转到提示“近期您已经授权登录过”页面,这时线索就断了。应用无法得知是谁打开了应用,就无法登录了)

当用户授权过后短时间内微信会提示以下页面,跳转时并不带回任何参数的情况下如何获得用户身份?



加载中
1
康州牧码人
康州牧码人

每一次访问页面都会获取到code,然后通过code去拿到用户授权网页的accesstoken,然后拿着这个token去获取用户信息,你保存这个token没意义,因为一个code对应者一个用户认证的accesstoken;再访问,你就再获取就行了



yiyide266
yiyide266
我知道是每个用户对应一个token,你的意思是每次登录都要求用户授权一次,起初我也这样考虑,这种方式可靠又稳定,但是我发觉最近微信限制了每次登录都启用授权啊,授权一次后下次打开授权页面时会是上图那个“近期您已经授权登录”而不是带回code的页面,以前并不会这样,会不会是我现在的手机问题
0
南湖船老大
南湖船老大

    在获取到用户的openID后,将openID和access token保存到你本地的数据库,并且在session里放一份,下一次就不需要跳转到微信的授权登录页了,然后数据库里读用户的access token进行其他操作。
    至于你说的cookie没了,那就重新请求啊,然后根据openID去更新access token。我一直没觉得流程有啥问题啊,我这很顺畅

yiyide266
yiyide266
可能是我这个手机的问题吧,重新授权不会跳转到授权页面,而是“近期已经授权”的提示页面,头痛
0
少波king
少波king
是因为你的access_token没有过期所以会提示你近期已经授权,一般第三方登录后不是直接进入应用,而是要绑定第三方本地的用户,同时还要保存openid,当你下次登录的时候就可以通过本地用户登录,或者可以通过微信登录了,也可以通过openid找到本地用户,这时候就形成了一个整体了
少波king
少波king
回复 @yiyide266 : 回复 @yiyide266 : 当然在绑定之前在session中保存,无论是你关闭页面还是浏览器卡掉,当你重新打开页面的时候session是不会失效的,除非你是自己关掉的浏览器
yiyide266
yiyide266
万一第一次绑定的过程中失败了呢,例如用户关掉了页面,应用服务器遇上网络问题,程序异常等等未知因素怎么办?有没有方法可以在短时间内发起第二次授权?剧我尝试的过程是无论页面回调发生任何异常情况,只要用户按了同意授权的按钮微信服务器就认为已经授权了,下次再打开的时候就出现这个“已授权”的页面了
0
fhc1991
fhc1991
提示近期已经授权的页面太讨厌了,怎么可以不出现这个页面直接进入指定的链接中
0
babygo
babygo
问题解决了吗, 我也遇到了,openid都取不到怎么搞
0
LUOYIRUIX
LUOYIRUIX

 2017最新方案,外部链接可以直接WAP跳转到微信中打开链接,支持支付接入,可携带支付参数完成付款,支持安卓和IOS,方法我已经系统化,直接给普通用户提供API接口,需要的可以直接找我拿 QQ   7  7  4 0  8  0  2 6
微信疑难工具http://www.api-export.com/ 

 
 

返回顶部
顶部