日期:2014-05-17  浏览次数:20376 次

关于OAuth2的access_token问题
asp.net网站QQ登录或微博登录→授权页面→得到access_token→根据access_token调用API得到用户信息(开放的ID跟昵称)并将其存入数据库绑定

我想问access_token要不要也存入数据库?存了之后有什么用?再授权的时候使用么?如果是是怎么使用的呢?
或者有没有其他方法进行QQ新浪等第三方登录呢?

------解决方案--------------------
你每次请求都需要带上access_token
------解决方案--------------------
access_token 无须存而且也不能存,这个不是固定的,存了没意义。

OAuth返回的信息里面会有一条openid.identifier全称忘了,类似标识的意思。

感觉腾讯的返回的应该是QQ号,存这个就行了。
------解决方案--------------------
再授权的时候,是重新请求新的access_token, 因为openid.identifier是唯一的,这时候就能确定是哪个用户有了权限。

这样的过程:
请求OpenID->获取OpenID和access_token->请求OAuth信息->获取用户的信息(你这里是QQ信息)->对比你的application的用户信息->根据identifier(你这里可能是QQ号)进行本地权限映射->根据获取到的QQ信息,初始化你的application

这样是正常的登陆过程。
有些声称支持OAuth协议的厂商并不是标准的OAuth,故有可能下面这几步能直接略过,直接请求OAuth信息即可:
请求OpenID->获取OpenID和access_token->请求OAuth信息



------解决方案--------------------
不需要保存数据库
------解决方案--------------------

其实腾讯提供了C#的SDK,并且也有很多demo可参考
oauth_token: access_token
oauth_token_secret: access_secret
这两个是需要保存的,如果长期使用的话。先检查本地数据库有没有,没有就去请求授权。

------解决方案--------------------

openkey&openid的方式腾讯已经不太推荐,都在慢慢的淡化。还是推荐OAuth2.0方式。