实验室F老师,下达任务,让我实现一个第三方登录的任务 任务提示:oauth

这个东西弄了我好长时间,不是因为难,而是腾讯开发者申请来来回回的,耗费时间比较长。

所以看到这里,需要做第三方的话,啥也别说,先去注册吧。节约时间并注册

目前这个网站长这个样子:

java给第三方用户赋予读写权限 java实现第三方登录_oauth


qq第三方这里有点乱,有个qq互联 还有一个qq开放平台……据说这两家不和,搞得信息有点乱。还需擦亮眼

不八卦了,qq互联有很详细的关于第三方登录原理解释(依据oauth) 我要看他的文档 理论部分参考即可

这里说一下实际操作。(一下步骤基于开发者已经申请成功)

1.首先注册一个网页应用,因为是测试,所以随便瞎填就行,正式上线得好好写。然后接受霸王条款

java给第三方用户赋予读写权限 java实现第三方登录_java web_02


下一步要精神了,这是重点,红笔记一下

java给第三方用户赋予读写权限 java实现第三方登录_oauth_03


网站域名 单机测试:localhost 即可

回调域,这个地址就是用户登录成功之后qq平台调转到的地址,所以谨慎填写。

剩下的随便写,可以不用上传照片

正式上线按照要求填写

2.创建完成之后,等待不通过审核,?!不通过审核?对,刚才填的乱七八糟的怎么会通过审核。正式上线的话肯定是需要审核通过的,所以前面的信息需要认真填写

但是你会获得两个重要的东西

java给第三方用户赋予读写权限 java实现第三方登录_java web_04


APP ID 和 APP Key (妈妈说这个东西很私密哦~不能给别人乱看)还有回调地址!

java给第三方用户赋予读写权限 java实现第三方登录_java给第三方用户赋予读写权限_05

3.创建一个web项目

到一开始给的网站,在这里下载SDK,里面有”我知道你超懒已经给你做好的”demo

java给第三方用户赋予读写权限 java实现第三方登录_oauth_06


下载完成后打开eclipse 创建一个新项目 (因为腾讯给的demo无法直接导入,所以手动复制粘贴导入)

java给第三方用户赋予读写权限 java实现第三方登录_第三方登录_07


按照这个框架把下载的demo copy进去,大神可以无视

然后研究一下大体结构,这里就不多说了,挺简单的。

然后qqconnectconfig.properties 中把app id key 回调地址写进去

java给第三方用户赋予读写权限 java实现第三方登录_开发者_08


之后进入web.xml 回调地址的名字改一下,当然你也可以自己设置你的专属

java给第三方用户赋予读写权限 java实现第三方登录_开发者_09


之后欣赏一下成功的页面

页面1 点击第三方登录

java给第三方用户赋予读写权限 java实现第三方登录_开发者_10


页面2 跳转qq登录页面


页面3 登录成功后返回信息

java给第三方用户赋予读写权限 java实现第三方登录_java给第三方用户赋予读写权限_11


这只是个例子。

其实第三方登录这个活还是主要任务量在前端。

还有一个问题是如何与我们自己做的网站结合。原来一直以为可以获取到用户的qq号,但是发现不行,所以用openid 作为绑定依据。

先是第三方登录,之后获取openid,然后在认证中心用户里按照openid进行查询,匹配到的登录,未匹配到的进行新用户注册或与存在用户绑定。

后来又思考到一个问题,目前是先把qq的第三方跑起来,后续会加入其它第三方的内容,比如微博,微信等。目前认为这些第三方应该都会有一个类似openid 的东西,所以数据库里新建一个表,一个字段是user_id,另一个字段为open_id,这样查询的话直接从这个表里查询。目前是这样构思的。