Linked 、 Google 、 Facebook oAuth登录

来源:互联网 发布:dbc数据库是什么 编辑:程序博客网 时间:2024/05/29 07:33

第三方登录的原理都是一样的。
首先需要在第三方平台上为自己创建一个应用,该应用会拥有ID、密码等属性
然后客户从我们的项目上通过第三方登录时 会携带我们的应用的ID跳转到第三方平台进行登录与授权,之后在第三方平台上会生成一个token ,并将该token返回到我们的平台,通过该token,我们就可以再次去请求第三方平台获取用户的基本信息 来达到登录的功能。

一、Linked oAuth

使用LinkedoAuth的第一步需要在http://www.linkedin.com/注册一个linked帐号

然后使用注册好的帐号登录

然后打开http://developer.linkedin.com/选择导航栏中的Support→ API Keys 进入Applications页面。

在这里可以创建一个Application,填写好信息之后就提交表单,创建成功之后,页面会输出Application的信息,包含最终要的APIKeySecret Key


此时我们的系统已经可以支持从Linked登录了,登录方式如下:

1、请求https://www.linkedin.com/uas/oauth2/authorization?response_type=code&client_id=h1lfn2m9l45p&state=这里填任意字符串&redirect_uri=http://localhost:8080/


然后会跳转到Linked的登录入口,输入用户名密码后会再跳转到我们通过redirect_uri指定的URL,并在url中携带了一个参数code


2、请求https://www.linkedin.com/uas/oauth2/accessToken?grant_type=authorization_code

&code=第一步获取的code

&redirect_uri=http://localhost:8080/

&client_id=h1lfn2m9l45p

&client_secret=XD0MqE4YQYjjcXop

将会得到一个Json类型的Response,该Response里面包含了token



3、请求

https://api.linkedin.com/v1/people/~?oauth2_access_token=第二步获取到的token

就能得到一个XML类型的Response,里面包含了该登录用户的信息,包含登录用户的姓名等信息


4、获取用户指定的信息 (前提条件是申请的clientId中设置了获取指定信息的权限)

获取EMIAL:https://api.linkedin.com/v1/people/~/email-address?oauth2_access_token=第二步获取的token



其实第1步与第2步中的参数redirect_url中的参数都应该是一个ServletURL

也就是第2步与第3步都需要在Servlet中解析返回的内容。在第三步如果成功的获取到了用户的信息,就将用户放入session(登录)




二、Gmail oAuth

第一步:登录gmail

第二步:访问https://code.google.com/apis/console#access

第三步:创建一个ClientID

创建好之后就能看到client idclient secretEmailaddressRedirectURIs等信息了

之后的方法与LinkedoAuth基本一样。可以参考https://developers.google.com/accounts/docs/OAuth2WebServer

接下来是客户登录

第一步:授权

https://accounts.google.com/o/oauth2/auth?scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.email+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.profile&state=任意字符串&redirect_uri=http://localhost:8080&response_type=code&client_id=创建的ClientID&approval_prompt=force

然后会进入google的验证页面,输入用户名和密码,然后确认授权,之后页面将会跳转到redirect_uri指定的URL,并携带参数state与code 

第二步:获取tokenId

发送post请求到https://accounts.google.com/o/oauth2/token

请求体如下:

POST /o/oauth2/token HTTP/1.1Host: accounts.google.comContent-Type: application/x-www-form-urlencodedcode=第一步获取到的codeclient_id=8819981768.apps.googleusercontent.com&client_secret={client_secret}&redirect_uri=https://oauth2-login-demo.appspot.com/code&grant_type=authorization_code
然后会得到一个JSON类型的Response,里面包含access_token


第三步:获取客户信息

发送下面的请求就能获取用户信息了

GET /oauth2/v1/userinfo HTTP/1.1Authorization: 第二步获取的access_tokenHost: googleapis.com
三、facebook oAuth

本地系统无法访问facebook的服务,但是我估计原理和上面的两种都差不多。


未完待续。。

原创粉丝点击