React native Azure AD使用React本机集成忽略作用域

React native Azure AD使用React本机集成忽略作用域,react-native,oauth-2.0,azure-active-directory,React Native,Oauth 2.0,Azure Active Directory,我正在创建一个使用Azure AD登录的应用程序,Azure AD返回的相同令牌应用于使用API。 我已经成功地完成了所有描述的步骤,并且正在工作。 我的问题是如何生成具有自定义作用域的访问令牌和刷新令牌,该自定义作用域允许应用程序调用api。 我试图对本机库做出反应,但每个库都有不同的问题(可能是我的代码有问题,而不是库) 首先,我尝试了定义以下范围: scope: ['openid', 'profile', 'User.Read', 'offline_access', 'api://mult

我正在创建一个使用Azure AD登录的应用程序,Azure AD返回的相同令牌应用于使用API。 我已经成功地完成了所有描述的步骤,并且正在工作。 我的问题是如何生成具有自定义作用域的访问令牌和刷新令牌,该自定义作用域允许应用程序调用api。 我试图对本机库做出反应,但每个库都有不同的问题(可能是我的代码有问题,而不是库)

首先,我尝试了定义以下范围:

scope: ['openid', 'profile', 'User.Read', 'offline_access', 'api://multiplan_broker_dev/read']
定义此作用域时,它将返回仅对该作用域有效的令牌api://multiplan_broker_dev/read 并且不返回刷新\u令牌(似乎忽略了脱机\u访问范围)

您可以看到整个返回对象和此实现的主代码

主要代码如下:

const CLIENT_ID = '75a43463-c3b4-4e31-b740-3a5a1858XXXX';
const TENANT_ID = '862085e1-045e-4d8c-832f-96837b0XXXXX';

const azureAuth = new AzureAuth({
  clientId: CLIENT_ID,
  tenant: TENANT_ID,
});

export default class Auth0Sample extends Component {
  constructor(props) {
    super(props);
    this.state = { accessToken: null, user: '' , mails: [], userId: ''};
  }

  _onLogin = async () => {
    try {
      let tokens = await azureAuth.webAuth.authorize({
        scope: ['openid', 'profile', 'User.Read', 'offline_access', 'api://multiplan_broker_dev/read'],
        login_hint: 'rioa@XXX.com' 
      })

      console.log('CRED>>>', tokens)
      this.setState({ accessToken: tokens.accessToken });
      let info = await azureAuth.auth.msGraphRequest({token: tokens.accessToken, path: 'me'})
      console.log('info', info)
      this.setState({ user: info.displayName, userId: tokens.userId })
    } catch (error) {
      console.log('Error during Azure operation', JSON.stringify(error))
    }
  };
因此,我尝试访问另一个库(),它返回refresh\u标记,但完全忽略了我请求的作用域

您可以看到返回的对象和主代码

我做错了什么? 附言:解决方案可以适用于任何图书馆,我没有偏好。
谢谢

范围不正确。您的作用域包含Microsoft Graph API端点和您自己的API端点。据我所知,我们一次只能为一个资源请求令牌

您可以按以下方式更改范围:

scope: ['openid', 'offline_access', 'api://multiplan_broker_dev/read']

谢谢,你说得对。不可能在同一请求中为多个应用程序请求访问令牌。我仍然不知道为什么第一个示例从不返回refresh_令牌,但是第二个示例和我可以解决我要求不同令牌的问题。