利用Google开发接口获取Google用户信息,OAuth2.0,profiles
2012-05-05 16:48
597 查看
直奔主题,利用Google OAuth2.0获取用户信息.希望对大家有帮助.
获取方法有好多种,网上有的方法是通过读取Google contacts中返回信息中的用户信息,貌似只能读取用户名和Email,我这个是直接用OAuth2.0来获取的.
这个是接口文档地址:https://developers.google.com/accounts/docs/OAuth2Login
首先,到https://code.google.com/apis/console#access 建立一个应用,申请成功后,你将获得Client ID和Client secret等信息,这个在后面会用到.
接下来就是访问Google的接口了.
访问地址:
接口参数:Google公布的参数有5个,其中有四个是必须的.
通过上述表述,我们构造出添加了参数后的访问地址: https://accounts.google.com/o/oauth2/auth?client_id=1079550655222.apps.googleusercontent.com&response_type=token&state=/default.aspx&redirect_uri=http%3a%2f%2flocalhost:4800%2fgoogleauth.aspx&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.email+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.profile
访问以后就会跳转到Google的登陆页面,填写完登陆信息以后,会提示你是否授权改应用访问你的Profile
点击允许后,Google就会返回一个token,然后我们再使用这个token来获取用户的Profile信息了.
然后我们再构建一个访问
接口地址:https://www.googleapis.com/oauth2/v1/userinfo
接口参数:access_token:就是上面获取的token
构建好的地址是:https://www.googleapis.com/oauth2/v1/userinfo?access_token=AAA
然后我们就能获取到用户的信息了.
获取一点信息,居然经历过这么多的步骤,可谓是跋山涉水了.其实我们可以用一种懒人的办法,在返回token的时候通过WebRequest对象来代替我们做第二次访问.
在这里,我用了System.Web.Script.Serialization命名空间中的JavaScriptSerializer来反序列化获得的JSON到一个userInfo变量中.
还有一点要注意,由于第一次访问获取token的时候,返回的地址并不是类似于http://www.cnblogs.cn/g.aspx?access_token=AAA 这种格式,而是http://www.cnblogs.cn/g.aspx#access_token=AAA的.所以我们还要进行一个小的处理,在接收页面g.aspx中添加如下js代码
这样就好了.
还有一种方法也可以获取到用户的信息,并且也不需要申请app,不需要Client ID.不过Google好像要停止对这种接口的支持,不建议大家使用
接口文档地址:https://developers.google.com/accounts/docs/OAuth
构造访问地址:https://www.google.com/accounts/AuthSubRequest?next=http%3A%2F%2Flocalhost:50475%2fgoogleauth.aspx&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.email+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.profile
后面的处理基本一样,就不多啰嗦了
源代码:为什么不能上传源代码
获取方法有好多种,网上有的方法是通过读取Google contacts中返回信息中的用户信息,貌似只能读取用户名和Email,我这个是直接用OAuth2.0来获取的.
这个是接口文档地址:https://developers.google.com/accounts/docs/OAuth2Login
首先,到https://code.google.com/apis/console#access 建立一个应用,申请成功后,你将获得Client ID和Client secret等信息,这个在后面会用到.
接下来就是访问Google的接口了.
访问地址:
https://accounts.google.com/o/oauth2/auth
接口参数:Google公布的参数有5个,其中有四个是必须的.
response_type:
codeor
token,只能是这两个中的一个,
client_id:就是上面申请的Client ID
redirect_uri:Google处理完申请后返回地址,用于接收参数,处理后面的事情.
scope:这个是要填写你想要获取哪些信息,在本例中,我们需要传给Google的是
https://www.googleapis.com/auth/userinfo.profile和
https://www.googleapis.com/auth/userinfo.email
state:可选参数,随便填写,看有什么需要就自己写上,比如处理完数据后要跳转到某个页面,就可以写到这个参数里.
通过上述表述,我们构造出添加了参数后的访问地址: https://accounts.google.com/o/oauth2/auth?client_id=1079550655222.apps.googleusercontent.com&response_type=token&state=/default.aspx&redirect_uri=http%3a%2f%2flocalhost:4800%2fgoogleauth.aspx&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.email+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.profile
访问以后就会跳转到Google的登陆页面,填写完登陆信息以后,会提示你是否授权改应用访问你的Profile
点击允许后,Google就会返回一个token,然后我们再使用这个token来获取用户的Profile信息了.
然后我们再构建一个访问
接口地址:https://www.googleapis.com/oauth2/v1/userinfo
接口参数:access_token:就是上面获取的token
构建好的地址是:https://www.googleapis.com/oauth2/v1/userinfo?access_token=AAA
然后我们就能获取到用户的信息了.
获取一点信息,居然经历过这么多的步骤,可谓是跋山涉水了.其实我们可以用一种懒人的办法,在返回token的时候通过WebRequest对象来代替我们做第二次访问.
Dim token As String = Request.QueryString("token") If token IsNot Nothing AndAlso String.IsNullOrEmpty(token) Then Dim urlData As String = "https://www.googleapis.com/oauth2/v1/userinfo?access_token=" & token Dim wReq As WebRequest = WebRequest.Create(urlData) Dim responseText As String = New StreamReader(wReq.GetResponse().GetResponseStream()).ReadToEnd() Dim js As New JavaScriptSerializer() Dim userInfo As Dictionary(Of String, String) = js.Deserialize(Of Dictionary(Of String, String))(responseText) For Each item As KeyValuePair(Of String, String) In userInfo Response.Write(item.Key & ":" & item.Value & "<br />") Next End If
在这里,我用了System.Web.Script.Serialization命名空间中的JavaScriptSerializer来反序列化获得的JSON到一个userInfo变量中.
还有一点要注意,由于第一次访问获取token的时候,返回的地址并不是类似于http://www.cnblogs.cn/g.aspx?access_token=AAA 这种格式,而是http://www.cnblogs.cn/g.aspx#access_token=AAA的.所以我们还要进行一个小的处理,在接收页面g.aspx中添加如下js代码
<script type="text/javascript"> var params = {}, queryString = location.hash.substring(1); window.location.href = "/googleauth.aspx?" + queryString; </script>
这样就好了.
还有一种方法也可以获取到用户的信息,并且也不需要申请app,不需要Client ID.不过Google好像要停止对这种接口的支持,不建议大家使用
接口文档地址:https://developers.google.com/accounts/docs/OAuth
构造访问地址:https://www.google.com/accounts/AuthSubRequest?next=http%3A%2F%2Flocalhost:50475%2fgoogleauth.aspx&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.email+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.profile
后面的处理基本一样,就不多啰嗦了
源代码:为什么不能上传源代码
相关文章推荐
- 夺命雷公狗---微信开发51----网页授权(oauth2.0)获取用户基本信息接口(1)
- 微信公众平台开发—利用OAuth2.0获取微信用户基本信息
- 夺命雷公狗---微信开发53----网页授权(oauth2.0)获取用户基本信息接口(3)实现世界留言版
- 微信公众平台开发—利用OAuth2.0获取微信用户基本信息
- C#微信公众号开发-高级接口-之网页授权oauth2.0获取用户基本信息(二)
- 微信公众平台开发—利用OAuth2.0获取微信用户基本信息
- 微信公众平台开发—利用OAuth2.0获取微信用户基本信息[申明:来源于网络]
- 夺命雷公狗---微信开发52----网页授权(oauth2.0)获取用户基本信息接口(2)
- 微信公众平台开发—利用OAuth2.0获取微信用户基本信息
- 微信公众平台开发—利用OAuth2.0获取微信用户基本信息
- C#微信公众号开发--网页授权(oauth2.0)获取用户基本信息二
- php利用微信接口获取微信用户信息
- 微信公众平台开发(76) 无高级接口账号获取用户基本信息
- C#微信公众号开发之网页授权oauth2.0获取用户基本信息(一)
- 夺命雷公狗---微信开发45----获取用户基本信息接口(2)
- 微信公众平台开发(76) 无高级接口账号获取用户基本信息
- 微信接口开发之高级篇系列【网页授权获取用户基本信息】
- C#微信公众号开发--网页授权(oauth2.0)获取用户基本信息一
- 微信授权登录并获取用户信息接口开发
- 微信公众平台开发(76) 无高级接口账号获取用户基本信息