使用 OAuth 提供方对象进行 Firebase 身份验证。请注意,与其他 FirebaseAuth 操作不同,此操作会弹出自定义 Chrome 标签页,从而控制您的界面。因此,请不要在您附加的 OnSuccessListener 和 OnFailureListener 中引用您的 Activity,因为当该操作启动界面时,它们会立即分离。

您应该首先检查是否已收到响应。通过这种方法登录时,您的 Activity 将位于后台,这意味着系统可以在登录流程中将其回收。为了确保发生这种情况时不让用户进行重试,您应该检查结果是否已经存在。

如需检查是否存在待处理的结果,请调用 getPendingAuthResult:

Task pendingResultTask = firebaseAuth.getPendingAuthResult();

if (pendingResultTask != null) {

// There's something already here! Finish the sign-in for your user.

pendingResultTask

.addOnSuccessListener(

new OnSuccessListener() {

@Override

public void onSuccess(AuthResult authResult) {

// User is signed in.

// IdP data available in

// authResult.getAdditionalUserInfo().getProfile().

// The OAuth access token can also be retrieved:

// authResult.getCredential().getAccessToken().

// The OAuth ID token can also be retrieved:

// authResult.getCredential().getIdToken().

}

})

.addOnFailureListener(

new OnFailureListener() {

@Override

public void onFailure(@NonNull Exception e) {

// Handle failure.

}

});

} else {

// There's no pending result so you need to start the sign-in flow.

// See below.

}

如需启动登录流程,请调用 startActivityForSignInWithProvider:

firebaseAuth

.startActivityForSignInWithProvider(/* activity= */ this, provider.build())

.addOnSuccessListener(

new OnSuccessListener() {

@Override

public void onSuccess(AuthResult authResult) {

// User is signed in.

// IdP data available in

// authResult.getAdditionalUserInfo().getProfile().

// The OAuth access token can also be retrieved:

// authResult.getCredential().getAccessToken().

// The OAuth ID token can also be retrieved:

// authResult.getCredential().getIdToken().

}

})

.addOnFailureListener(

new OnFailureListener() {

@Override

public void onFailure(@NonNull Exception e) {

// Handle failure.

}

});

成功完成后,可以从返回的 OAuthCredential 对象检索与提供方关联的 OAuth 访问令牌。

使用 OAuth 访问令牌,您可以调用 Microsoft Graph API。

与 Firebase Authentication 支持的其他提供方不同,Microsoft 不提供照片网址,您必须通过 Microsoft Graph API 来请求个人资料照片的二进制数据。

除了 OAuth 访问令牌,您还可以从 OAuthCredential 对象检索用户的 OAuth ID 令牌。ID 令牌中的 sub 声明取决于具体应用,该声明与 Firebase Auth 所使用的可通过 user.getProviderData().get(0).getUid() 访问的联合用户标识不匹配。应改用 oid 声明字段。使用 Azure AD 租户登录时,oid 声明将完全匹配。不过,对于非租户,系统将填充 oid 字段。对于联合 ID 4b2eabcdefghijkl,oid 的格式为 00000000-0000-0000-4b2e-abcdefghijkl。

android10热点验证身份,在 Android 上使用 Microsoft 进行身份验证相关推荐

  1. Android手机teams,在iOS和Android上自定义Microsoft Teams体验的三种最佳方法

    以下是您可以在iOS和Android上自定义Microsoft Teams应用程序以使其成为自己的三种方法 1. 开启黑暗模式,以便iOS和Android上的小组中的消息和其他内容更易于理解和阅读 2 ...

  2. [jQuery]使用jQuery.Validate进行客户端验证(高级篇-上)——不使用微软验证控件的理由...

    在上一篇使用jQuery.Validate进行客户端验证(中级篇-下)中我介绍了jQuery.Validate在日常使用的过程中会遇到哪些问题及解决办法,今天的高级篇则主要是对jQuery.Valid ...

  3. 如何在Raspberry Pi上设置两因素身份验证

    Kiklas/ShutterstockKiklas /快门 The Raspberry Pi is everywhere now, which is why it's caught the eye o ...

  4. windows 中 vpn连接提示, 虚拟专用网络 由于RAS/虚拟专用网络,服务器上配置的某个策略,服务器用于验证用户名和密码的身份验证方法可能与连接配置文件中的身份证验证方法不匹配

    windows 虚拟专用网络 由于RAS/虚拟专用网络,服务器上配置的某个策略,服务器用于验证用户名和密码的身份验证方法可能与连接配置文件中的身份证验证方法不匹配 打开网络 更换网络适配器 选项 右键 ...

  5. Microsoft Graph Toolkit 新版发布 - 新的 Microsoft Teams 身份验证提供程序和文件上传功能

    微软宣布 Microsoft Graph Toolkit 发布了新的 2.3 版本,这个版本包括一个新的 Microsoft Teams 身份验证提供程序,文件列表 (File List) 组件中的文 ...

  6. 如何在Android上访问iCloud服务

    Apple users are able to store their notes, pictures, contacts, and settings in their iCloud storage ...

  7. android邮箱附件传输,Android上发送带附件的邮件

    准备工作-下载最新版本的JMail 在android上发送邮件方式: 第一种:借助GMail APP客户端,缺点是必须使用GMail帐号,有点是比较方便 不需要写很多代码,但是不是很灵活. 第二种:基 ...

  8. android手机icoude邮件,如何在Android上设置iCloud电子邮件访问 | MOS86

    如果从iPhone切换到Android,则不必放弃iCloud服务(例如iCloud Mail). 尽管Apple并不容易设置,但可以在Android上登录并使用您的iCloud电子邮件地址. 虽然我 ...

  9. xbox android,Android 上的 Xbox Live Api 入门

    Android 上的 Xbox Live Api 入门 09/21/2018 本文内容 若要将 Xbox Live Api 用于 Android 游戏,你可以使用预编译的二进制文件,或在你的项目中包含 ...

最新文章

  1. Windows phone 应用开发[12]-Pex 构建自动化白盒测试[下]
  2. Golang之channel操作
  3. 如何用r语言搜集报表_基迪奥免费小课堂——如何用R语言绘制GSEA plot
  4. python连接oracle报错tns_Python3操作oracle数据库及遇到的报错
  5. 22考研计算机专业课——操作系统【❤️考研复习指导❤️】
  6. SqlMapConfig.xml 的配置
  7. Firewalld 允许指定IP访问端口
  8. matlab 对数函数表示,matlab对数函数怎么表示
  9. 解析AI漫画系统CariGAN:这效果让漫画师颤抖!
  10. Dlib+Opencv库实现疲劳检测
  11. 中国大学MOOC-陈越、何钦铭-数据结构-习题解答-02 线性结构
  12. 2 OsgEarth中实现PBR材质流程总结
  13. 强化学习入门项目spinning up(1)安装
  14. 转炉炼钢计算机仿真实验报告,计算机仿真、实验报告.docx
  15. 多路温度检测及报警系统(DS18B20)
  16. 第七次c++上机实验
  17. Python测试函数出现错误问题解决:AssertionError: None != ‘Janis Joplin‘
  18. USBWriter 使用手册
  19. 计算机专业集齐七龙珠,集齐七颗龙珠 为你召唤一台飞行堡垒8
  20. mapjoin与reducejoin

热门文章

  1. document.execCommand()函数可用参数解析 (转)
  2. 【数据结构与算法】之深入解析“两数相除”的求解思路与算法示例
  3. 树莓派AI视觉云台——6、Linux常用命令及vim编辑器的使用
  4. SVN基本的理解和使用
  5. 【机器视觉】 export_def算子
  6. 【STM32】SysTick定时器
  7. 【Qt】Qt中QJsonValue类
  8. oracle10g的silent,Linux 静默(Silent) 安装Oracle 10g
  9. php另一个php的变量,php - PHP:如何更改依赖于另一个变量的变量? (新手资料) - SO中文参考 - www.soinside.com...
  10. python lambda函数加法_python lambda的使用详解