RT,App里用友盟的SDK做第三方登录,支持微博,微信,QQ,豆瓣等等,获取到uid和access token传给我。
我在服务端想验证uid的真伪,友盟没有服务端的接口,要自己一家一家做觉得有点麻烦,有没有开源的实现?
1
hging 2015-02-11 14:13:08 +08:00
没有. 验证他干啥....传给你什么就是什么就认为已经登录过就好了啊. 验证是APP端做的
|
3
kslr 2015-02-11 14:38:57 +08:00
你需要了解Oath2
|
4
qiayue 2015-02-11 14:39:12 +08:00
@fengchang 所以你的 api 本身需要对信息做验证,以确保中途被人截获的请求修改参数是无效的
如果真的想要验证 uid 那么只能是一家一家去做 |
5
kslr 2015-02-11 14:41:24 +08:00
打错了,oauth2 accesstoken本身就是一个令牌
|
6
hyzjshwo 2015-02-11 14:42:10 +08:00
那是你和app的事了,和第三方没关系,第三方只是告诉你的app:ok ,验证通过,你的uid是xxx,头像是xxx,性别:o
|
7
fengchang OP @kslr 我了解一点OAuth2,在这里的access token的Resource server是第三方服务器,拿着这个去转发新浪微博或者发朋友圈是安全的,因为Resource server可以向Authorization server验证token。但是对于我的服务器来说,如果不对token做验证,那谈何安全?
|
9
fengchang OP @kslr 算了,感觉你也没做过。我的App里当然有自己的token。我自己系统的账号可以在数据库里验证密码,第三方的系统只能请求别人的服务器做验证。第三方平台也都提供了这个接口,比如
http://open.weibo.com/wiki/Oauth2/get_token_info http://mp.weixin.qq.com/wiki/17/c0f37d5704f0b64713d5d2c37b468d75.html#.E9.99.84.EF.BC.9A.E6.A3.80.E9.AA.8C.E6.8E.88.E6.9D.83.E5.87.AD.E8.AF.81.EF.BC.88access_token.EF.BC.89.E6.98.AF.E5.90.A6.E6.9C.89.E6.95.88 我只想找个集成好的实现以免重复写代码,没想到这么多人跳出来告诉我不需要验证,现在程序员的安全意识真是呵呵了。 |
10
jeansfish 2015-02-11 16:48:19 +08:00
那你要找集成在服务器的oauth实现
|
11
yuezhimsolo 2015-02-11 17:00:31 +08:00
我靠,文档你不看,github你不查,开源中国你不读。。。。。
|
12
fengchang OP @yuezhimsolo 查了,没找到,能给个链接吗?
|
13
jsq2627 2015-02-11 20:29:04 +08:00
自己实现一下吧 = = 第三方登录总共也就那么几家而已。
服务端语言是啥? |
14
hahastudio 2015-02-11 20:54:11 +08:00 1
原来还有人不验证= =自己玩大概不用验证,做成产品就得有了吧= =
没用过友盟,没用过国产第三方登录服务= = 就简单地搜了一下,看到了一些人的学习笔记,例如: http://blog.csdn.net/arthurchenjs/article/details/6567563 感觉你就别想着找开源实现了= =自己做吧= = |
15
pubby 2015-02-11 22:02:53 +08:00
后台拿access_token再去获取一下用户信息比对一下
主要也就QQ 微信 微博 , 主要还是微信和QQ, 微博登录数差了个数量级,其它的估计量更小了 另外提一下: QQ那个有点坑,你拿app上得到access_token在服务端取信息,有一定概率拿到的用户信息是"qzuser",没头像,没信息 猜测是因为你app和服务器ip不同,导致连接了qq不同的服务器,而qq集群间数据同步方面偶尔抽风,瞎猜,反正我没解决 -_- ,这种情况只好直接拿APP得到的userinfo来用。 |
18
jeansfish 2015-02-11 22:30:18 +08:00
|
19
gongweixin1990 2015-02-12 11:36:37 +08:00
没什么验证的必要吧,uid和accessToken都是QQ、微博那边传过来的,你那边要验证就只能自己又重新在微博那边走一遍Oauth
|
20
fengchang OP @gongweixin1990 怎么会没必要呢?
比如某个大V用微博登录了知乎。我上微博看一下大V的页面就能拿到大V的uid,然后再自己编造一个accessToken,发给知乎的服务器,知乎的服务器如果不再去微博验证accessToken,相信了这个uid,这样我不就登录到他的知乎号上了吗? |
21
dadou 2015-02-20 02:30:30 +08:00
@fengchang 你好,问题解决的怎么样了?刚开始做 App,到第三方登录我也想不通了,是在自己的服务端单独验证 token 的吗?
|
22
fengchang OP @dadou 是的,我是在服务端再请求一次第三方服务器做认证,代码量其实不大,不同平台就是url不同。
在QQ开放平台的文档里看到一段关于登录态验证的必要性的解释,你可以看一下。 http://wiki.open.qq.com/wiki/%E6%8A%80%E6%9C%AF%E4%BC%98%E5%8C%96%E5%8E%9F%E5%88%99 第1.3节 |
23
denghongcai 2015-04-27 18:17:14 +08:00
挖个坟,居然还有说不需要验证的,真是有意思
|
24
lito 2015-05-04 17:01:46 +08:00
我想说,不是可以通过 accessToken通过第三方的api获取到用户的uid吗?然后再对比Uid是否相同!这样算验证吗?
另外,想问下lz!当用户第二次启动app的时候,客户端给你传什么值? |
25
wcp1231 2015-06-03 20:20:03 +08:00
@lito qq 和 微信的 uid 应该是每个应用不一样且不可遍历的,所以应该可以。但是微博的 uid 就是直接在 浏览器里能看到的数字 http://weibo.com/u/xxxxxx ,这样就危险了。。
|
26
sheepsheep 2017-05-29 00:18:52 +08:00
我自己做了一个关于登录校验的 Java 版本,在 github 上,大家可以参考一下。技术不行,还要向大家多学习
https://github.com/elsheep/thirdpartylogin |