Microsoft Graph API 是 Microsoft 提供的一个 RESTful API,用于访问 Microsoft 365 并与之交互。它允许开发者访问用户的 Microsoft 365 数据,如邮件、日历、联系人等。为了安全地访问这些数据,Microsoft Graph API 使用 OAuth 2.0 进行身份验证和授权。
在 OAuth 2.0 中,刷新令牌(Refresh Token)用于在访问令牌(Access Token)过期后获取新的访问令牌,而不需要用户重新进行身份验证。刷新令牌通常具有较长的有效期。
offline_access
范围,这是获取刷新令牌所必需的。offline_access
范围,这是获取刷新令牌所必需的。以下是一个使用 Microsoft Graph API 获取访问令牌和刷新令牌的示例代码(使用 Python 和 requests
库):
import requests
# 配置参数
tenant_id = 'your_tenant_id'
client_id = 'your_client_id'
client_secret = 'your_client_secret'
redirect_uri = 'your_redirect_uri'
# 获取授权码
auth_url = f'https://login.microsoftonline.com/{tenant_id}/oauth2/v2.0/authorize?client_id={client_id}&scope=https%3A%2F%2Fgraph.microsoft.com%2F.default+offline_access&response_type=code&redirect_uri={redirect_uri}'
print(f'Please navigate to: {auth_url}')
auth_code = input('Enter the authorization code: ')
# 获取访问令牌和刷新令牌
token_url = f'https://login.microsoftonline.com/{tenant_id}/oauth2/v2.0/token'
data = {
'grant_type': 'authorization_code',
'client_id': client_id,
'scope': 'https://graph.microsoft.com/.default offline_access',
'code': auth_code,
'redirect_uri': redirect_uri,
'client_secret': client_secret
}
response = requests.post(token_url, data=data)
tokens = response.json()
if 'access_token' in tokens and 'refresh_token' in tokens:
print(f'Access Token: {tokens["access_token"]}')
print(f'Refresh Token: {tokens["refresh_token"]}')
else:
print('Failed to obtain tokens:', tokens)
通过以上步骤和示例代码,你应该能够解决未收到刷新令牌的问题。如果问题仍然存在,建议检查 Azure AD 的日志和配置,以获取更多详细信息。
领取专属 10元无门槛券
手把手带您无忧上云