azure - 在 React Native 中使用 Azure 登录

标签 azure react-native azure-active-directory

我目前正在尝试使用以下方式从 azure 广告登录:

react-native-azure-auth

使用此代码:

      let tokens = await this.azureAuth.webAuth.authorize({ scope: 'offline_access profile User.ReadBasic.All Mail.Read' ,})

现在它工作正常,唯一的事情是我传入范围“offline_access”并将其设置在门户中,但在响应中我没有获得刷新 token 并且范围字段缺少offline_access,

这是示例:

{"clientId":"69ab--04ccfbf","rawIdToken":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsxNDV0c2kwX2YwWndQYmh1WGlIMWpQ2diNUZnWHhUZVkiLCJ0aWTIzOS0zYjcxLTRmZjEtODk0Ny1mODZkGkiOiIzRlR1RkVlbG1raU9IUEVWbkNkT0FBIiwidmVyIjoiMi4wIn0.qQNLG2-kJ1CXIn8B4P8GUGimtT9WAiv5AaWhwl-Po_F14Oh8ZfAWTjaI8SQrnHfoHdbZY5_3nwjRT8Fz283Xy1bBKsgRCB75p936oO4ggPt4Mdhngzm3-xxRVvq8ysECaPlcQUFN9d6st4arly8umRypzyE6w","userId":"<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="6f020e06032f07001c1b410c0002" rel="noreferrer noopener nofollow">[email protected]</a>","userName":"My name","tenantId":"2b555239-3b51-4f33-8944-f81111111e0","idTokenExpireOn":1594309415000,"accessToken":"eyJ0eXAiYS0wNDgwYTIwY2NmYmYiLCJhcHBpZGFjciI6IjAiLCJmYW1pbHlfbmFtZSI6IlR3aW5hIiwiZ2l2ZW5fbmFtZSI6Illhbml2IiwiaXBhZGRyIjoiNxMC4xNDkiLCJuYW1lIjoiWWFuaXYgVHdpbmEiLCJvaWQiOiJhNTViMjQyMy00MGZiLTRkYjQtODk0Mi02Zjg5OTBjYjE0ZmGF0ZiI6IjEiLCJwdWlkIjoiMTAwMzIwMDA4RkI1MDQ4NyIsInNjcCI6Ik1haWwuUmVhZCBvcGVuaWQgcHJvZmlsZSBVc2VyLlci5SZWFkQmFzaWMuQWxsIGVtYWlsIiwic2lnbmluX3N0YXRlIjpbImttc2kiXSwic3ViIjoiZmc5WXdIMDMwc3RRUkMzV19NMDhiRXFfRW5BeTc0ZGg4RWpScyIsInRlbmFudF9yZWdpb25fc2NvcGUiOiJFVSIsInRpZCI6IjJiZTJhMjM5LTNiNzEtNG3LWY4NmQ1OWUxNjZlMCIsInVuaXF1ZV9uYW1lIjoiWVR3aW5hQGlhaS5jby5pbCIsInVwbiI6IllUd2luYUBpYWkuY28uOiIzRlR1RkVlbG1raU9IUEVWbkNkT0FBIiwidmVyIjoiMS4wIiwieG1zX3N0Ijp7InN1YiI6IlZzLUwxNDV0c2kwX2YwWndQYmh1WGlIMWpQYTZoaGhiN2diNUZnWHhUZVkifSwieG1zX3RjZHQiOjE0NTE1NDMyNTl9.J9WGrG34tAs9zWF3hb5cfclWVyDSwbr082cMj1psaTqGf8SRl2Ji-ABc4mvD8AGo4nnLiH69J0M5oe9pi2041nymfqu6w_QZsg7QqPG24XnZ17SrBNOj8pyBI4i6dWL8QQM-k2cLGesKVl33h1qCo4IvKhzZFdxf6-NRIXsaP8-I-4oDCZD1n7vpSliJ5HSsp5Y3MhpF6IEzVgo4Drh2ZCwYuKLiWrEu6jG_kmXEmyOf0Fw"
,**"scope":{"scopeStr":"email mail.read user.read user.readbasic.all","scope":["email","mail.read","user.read","user.readbasic.all"]},**"expireOn":1594309417216}

我缺少什么想法吗?

最佳答案

您可以在 link 中使用下面的代码,正如评论中提到的,它可以获取缓存的 token 或刷新过期的 token 。无需获取刷新 token ,因为刷新 token 用于在当前访问 token 过期时获取新的访问/刷新 token 对。

 try {
        // Try to get cached token or refresh an expired ones
        let tokens = await azureAuth.auth.acquireTokenSilent({scope: 'Mail.Read', userId: this.state.userId})
        if (!tokens) {
            // No cached tokens or the requested scope defines new not yet consented permissions
            // Open a window for user interaction
            tokens = await azureAuth.webAuth.authorize({scope: 'Mail.Read'})
        }
        let mails = await azureAuth.auth.msGraphRequest({token: tokens.accessToken, path: '/me/mailFolders/Inbox/messages'})
    } catch (error) {
      console.log(error)
    } 

关于azure - 在 React Native 中使用 Azure 登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62818666/

相关文章:

登录/注销后 Azure AD B2C 未按预期重定向

Azure AD 单点登录 : Mobile app with OAuth and SAML

azure - 如何在同一 ARM 模板中授予 VM 对 Key Vault 的访问权限

javascript - 在函数内部调用函数,只有在函数结束后,其余的代码才会发生

javascript - 获取 React.element 的元素(子元素)

node.js - React-Native 停留在加载依赖图已完成。没有错误

azure - Azure 上的 Spark SSD

Azure CDN 规则引擎重写默认文档并删除 .html 扩展名

Azure 流量管理器子网路由无法解析

ssl - 使用 Fiddler 捕获 Azure Active Directory 登录期间的交互