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的信息,包含最终要的APIKey与Secret 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中的参数都应该是一个Servlet的URL,
也就是第2步与第3步都需要在Servlet中解析返回的内容。在第三步如果成功的获取到了用户的信息,就将用户放入session(登录)
二、Gmail oAuth
第一步:登录gmail
第二步:访问https://code.google.com/apis/console#access
第三步:创建一个ClientID
创建好之后就能看到client id、client secret、Emailaddress、RedirectURIs等信息了
之后的方法与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的服务,但是我估计原理和上面的两种都差不多。
未完待续。。
- Linked 、 Google 、 Facebook oAuth登录
- Linked 、 Google 、 Facebook oAuth登录
- Linked 、 Google 、 Facebook oAuth登录
- PHP实现google开放登录 Google Oauth
- Google、FaceBook官方登录SDK思路
- 接入google SDK登录、支付,facebook SDK登录详细教程
- 用 Flask 来写个轻博客 (23) — 应用 OAuth 来实现 Facebook 第三方登录
- 史上最简单登录google/youtube/facebook/twitter/方法
- 史上最简单登录google/youtube/facebook/twitter/方法
- 雅虎停止支持Facebook和Google帐号登录是怎么回事呢
- 雅虎停止支持Facebook和Google帐号登录
- iOS Google Facebook 第三方登录(swift3.0 iOS9 xcode8)
- facebook 登录
- Facebook登录
- FaceBook登录
- FaceBook登录
- Google OAUTH + OpenID解决方案
- Google oauth 1.0
- Hadoop中HDFS目录字符长度和目录级数限制
- Antrus – 我搞的一个Android下的MVC开源框架
- SQL函数说明大全
- Mysql备份还原数据库之mysqldump实例及参数详细说明
- 数学之路(3)-信息隐藏(2)
- Linked 、 Google 、 Facebook oAuth登录
- 不得不引起注意的引用类型
- poj 2513解题报告
- 我对变量的一些看法。
- Cordova CLI源码分析(四)——创建工程
- 监视Python程式自动退出,并重新启动程式
- 视频解码优化(转载)
- E2题
- cocos2d-x 数学函数、常用宏粗整理