You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

iOS端MSGraph SDK中如何获取id_token?

获取MS Graph SDK iOS中的id_token解决方案

我之前在做iOS端Office 365登录集成时,也碰到过找不到id_token的问题,其实只要调整几个配置就能拿到AAD定义的id_token,下面是具体步骤:

  • 确保请求包含OIDC必需的Scope
    id_token是OpenID Connect(OIDC)协议的产物,必须在认证请求中加入openid和profile这两个scope,才能触发AAD返回id_token。在初始化MSALPublicClientApplication或者发起登录请求时,你的scope数组应该类似这样:

    NSArray *scopes = @[@"openid", @"profile", @"User.Read"];
    

    这里User.Read是获取用户详情需要的Graph权限,加上OIDC的两个scope后,认证流程就会返回id_token。

  • 从MSAL认证结果中直接提取id_token
    当用户登录成功后,你会拿到MSALResult对象,这个对象里的idToken属性就是你要的AAD标准id_token。比如在登录回调里:

    [application acquireTokenForScopes:scopes
                       completionBlock:^(MSALResult *result, NSError *error) {
                           if (!error) {
                               // 这里就是你要的id_token
                               NSString *idToken = result.idToken;
                               // 同时你也能拿到refresh token
                               NSString *refreshToken = result.refreshToken;
                           }
                       }];
    
  • 从缓存中获取已登录用户的id_token
    如果用户已经登录过,你可以通过MSAL的缓存机制获取id_token:

    [application allAccountsWithCompletion:^(NSArray<MSALAccount *> *accounts, NSError *error) {
        if (!error && accounts.count > 0) {
            MSALAccount *account = accounts.firstObject;
            [application acquireTokenSilentForScopes:scopes
                                             account:account
                                          completion:^(MSALResult *result, NSError *error) {
                                              if (!error) {
                                                  NSString *idToken = result.idToken;
                                              }
                                          }];
        }
    }];
    

另外补充一点:你提到安卓端用的是https://outlook.office.com/api/v2.0作为基础地址,其实不管是调用Outlook API还是MS Graph,底层都是通过AAD完成认证,所以安卓端获取id_token的逻辑和iOS类似,只要确保请求了OIDC的scope,就能从MSAL Android的认证结果中拿到对应的id_token。

内容的提问来源于stack exchange,提问作者derpoliuk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:50:28