Office365 API:使用 oauth2 令牌获取当前用户的电子邮件?
Office365 API: get current user email using oauth2 token?
我正在通过 ouath2 在我们的网络应用程序中对 Outlook (office365) 用户进行身份验证。主要是我遵循了这个例子: https://dev.outlook.com/RestGettingStarted/Tutorial/python 。我设法得到了 access_token
的回应;同样来自上面 link 的文章指出,响应应包含 token_id
,而后者又将包含编码的用户电子邮件。在我的例子中,使用访问令牌的响应是这样的:
{
u'token_type': u'Bearer',
u'scope': u'https://outlook.office.com/mail.readwrite',
u'access_token': u'EwB4Aul3BAA...ZQE=',
u'expires_in': u'3600'
}
这里显然没有 token_id
。我在谷歌上搜索了一些 Office365 API,这将允许使用 access_token
获取用户信息(和电子邮件),但没有成功。
有什么建议吗?
所以,答案很简单:我忘记在请求访问令牌之前将 openid
添加到范围。
我遵循了 https://dev.outlook.com/RestGettingStarted/Tutorial/php
中的 PHP 示例
但是,我无法获取登录用户的电子邮件地址,即使在 openid 范围内也是如此。
经过大约 24 小时的搜索和测试,我最终发现我需要添加 profile 作为范围。我只是通过 OAuth 沙箱 https://oauthplay.azurewebsites.net/ 通过检查请求 headers.
发现了这一点
希望这对某人有所帮助。
这真的应该更好地记录下来。
我正在通过 ouath2 在我们的网络应用程序中对 Outlook (office365) 用户进行身份验证。主要是我遵循了这个例子: https://dev.outlook.com/RestGettingStarted/Tutorial/python 。我设法得到了 access_token
的回应;同样来自上面 link 的文章指出,响应应包含 token_id
,而后者又将包含编码的用户电子邮件。在我的例子中,使用访问令牌的响应是这样的:
{
u'token_type': u'Bearer',
u'scope': u'https://outlook.office.com/mail.readwrite',
u'access_token': u'EwB4Aul3BAA...ZQE=',
u'expires_in': u'3600'
}
这里显然没有 token_id
。我在谷歌上搜索了一些 Office365 API,这将允许使用 access_token
获取用户信息(和电子邮件),但没有成功。
有什么建议吗?
所以,答案很简单:我忘记在请求访问令牌之前将 openid
添加到范围。
我遵循了 https://dev.outlook.com/RestGettingStarted/Tutorial/php
中的 PHP 示例但是,我无法获取登录用户的电子邮件地址,即使在 openid 范围内也是如此。
经过大约 24 小时的搜索和测试,我最终发现我需要添加 profile 作为范围。我只是通过 OAuth 沙箱 https://oauthplay.azurewebsites.net/ 通过检查请求 headers.
发现了这一点希望这对某人有所帮助。
这真的应该更好地记录下来。