0

我正在为我的 iOS 应用程序使用 Microsoft Graph SDK。

访问令牌过期时是否需要手动刷新?

我说的访问令牌是:NXOAuth2AccountStore.sharedStore().accounts[0].accessToken

我已经测试过,即使 accessToken 过期了,我仍然可以查询。在我第一次登录时,过期时间是 3600 秒。所以,我等了 2 个小时,再次测试以获取用户信息、事件,仍然可以得到它。

我已转储“accessToken.hasExpired”和“accessToken.expiresAt”以确保访问令牌已过期

谢谢

* 更多细节 *

我在这里遵循示例: https ://github.com/microsoftgraph/ios-swift-connect-sample

我在 Microsoft Graph 上找不到任何有关刷新访问令牌的文档: https ://graph.microsoft.io/en-us/code-samples-and-sdks

4

2 回答 2

2

是的,在您的应用程序中使用 Graph 时,您需要定期刷新令牌。更详细的文档可通过 Azure AD 的站点获得:https ://docs.microsoft.com/en-us/azure/active-directory/active-directory-authentication-scenarios

您正在使用的建议身份验证库包含刷新此令牌的方法:

@implementation NXOAuth2AuthenticatorRefreshCallback

如果我没有回答您的问题,您能否更具体地说明您要完成的工作?您可以使用过期的令牌还是无法刷新旧令牌?

于 2016-12-09T22:21:25.077 回答
0

每当您需要刷新访问令牌时,请使用此代码。这将作为图形 sdk 中提供的预定义代码的补丁,您可以从方法中提取令牌:

+(id)tokenWithResponseBody:(NSString *)theResponseBody tokenType:(NSString *)tokenType;

[MSGraphClient setAuthenticationProvider:AppDel.authentication.authProvider];

_graphClient = [MSGraphClient client];

NSMutableURLRequest * sampleReq = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:@"https://graph.microsoft.com/v1.0/me"]];

[_graphClient.authenticationProvider appendAuthenticationHeaders:sampleReq completion:^(NSMutableURLRequest *request, NSError *error){    
    if(error == nil)
    {

    }
    else
    {
        [self showToast:@"" message:@"Failure in refresh 0365 token"];
    }
}];
于 2017-08-23T06:53:45.017 回答