我目前正在构建一个与Python中的Google API交互的Web应用程序.使用oauth访问用户资源.成功验证和升级令牌后,如下所示:
gd_client = gdata.photos.service.PhotosService()
gd_client.SetAuthSubToken(token)
gd_client.UpgradeToSessionToken()
Run Code Online (Sandbox Code Playgroud)
然后,我可以访问API的不同供稿,并获取用户Youtube视频的列表.但是用户只使用Google登录,我所拥有的只是一个oauth令牌而没有其他用户信息.如何检索用户的信息?像电子邮件,显示名称等?我一直在测试很多不同的东西而没有设法解决这个问题......
我在这里发现了一些有趣的信息:使用Oauth通过Gmail验证后,有没有办法获取您的电子邮件地址?
我的理论是我可以使用PhotoService.GetAuthSubToken()然后重用该令牌来请求联系并从联系人条目获取auther.email.将auth的范围更改为:
scope = ['https://picasaweb.google.com/data/', 'https://www.google.com/m8/feeds/']
Run Code Online (Sandbox Code Playgroud)
女巫回归有效的两种服务...任何想法?
我只是想添加一个我发现特别容易使用的资源.这是:链接.Kallsbo通过搜索范围将我指引到了正确的位置https://www.googleapis.com/auth/userinfo.email.在您拥有之后credentials,只需使用直接从该链接获取的以下函数:
def get_user_info(credentials):
"""Send a request to the UserInfo API to retrieve the user's information.
Args:
credentials: oauth2client.client.OAuth2Credentials instance to authorize the
request.
Returns:
User information as a dict.
"""
user_info_service = build(
serviceName='oauth2', version='v2',
http=credentials.authorize(httplib2.Http()))
user_info = None
try:
user_info = user_info_service.userinfo().get().execute()
except errors.HttpError, e:
logging.error('An error occurred: %s', e)
if user_info and user_info.get('id'):
return user_info
else:
raise NoUserIdException()
Run Code Online (Sandbox Code Playgroud)
打电话给你user_email = get_user_info(credentials)['email'],你已经收到了你的电子邮件!:)
所以我发现了一个很棒的方法!
请求https://www.googleapis.com/auth/userinfo.email的额外范围,然后我可以使用Gdata.Client访问该范围以获取电子邮件地址.
完整的示例代码:https://code.google.com/p/google-api-oauth-demo/
完整写下我如何到达那里:http://www.hackviking.com/2013/10/python-get-user-info-after-oauth/
| 归档时间: |
|
| 查看次数: |
7784 次 |
| 最近记录: |