Android oneDrive 集成(二)– 单租户账号集成

最近我的个人应用KeepassA在酷安上收到了很多私信,问我能不能集成下OneDrive,作为唯一的没有被墙的,大型的跨平台云盘服务,集成OneDrive貌似很有必要。因此研究了好几天的微软文档,遇到了很多坑,总算是搞明白了该怎么集成。
这里不得不吐槽下,微软的东西总是大而全,对新接开发者很不友好,平台那出现问题,错误信息非常不明确。

一、注册azure账号

需要visa卡

https://azure.microsoft.com/zh-cn/free/

二、创建clientId

2.1 创建应用

创建应用

image-20201210110317007

为了让所有人都可以使用api,选择这个。这里有个地方需要注意,必须要输入重定向url,否则后续添加身份验证时就会提示错误。
image-20201210110453389

添加公用api的作用范围

image-20201210112908869

2.2 添加平台

image-20201210110846300

填写应用配置

image-20201210110939511

获取签名hash

# mac
keytool -exportcert -alias {alias} -keystore {keystore 地址} | openssl sha1 -binary | openssl base64

#windows
keytool -exportcert -alias {alias} -keystore {keystore 地址} | openssl sha1 -binary | openssl base64

debug签名:

# mac
keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64

# windows
keytool -exportcert -alias androiddebugkey -keystore %HOMEPATH%\.android\debug.keystore | openssl sha1 -binary | openssl base64

2.3 验证域名(可以不管)

image-20201210160531547

然后到域名管理那,增加记录,然后验证域

image-20201210182423898

x 常见问题

x.1 你的回复 URL 包含禁止使用的字词或域

https://docs.microsoft.com/zh-cn/azure/active-directory/develop/supported-accounts-validation
https://github.com/MicrosoftDocs/azure-docs/issues/54401

原因1:
单租户和多租户定义

2020/11/9 号之后需要验证开发者域(多租户需要验证了)
AzureADMyOrg:仅限应用注册的组织目录中的帐户(单租户)
AzureADMultipleOrgs:任何组织目录中的帐户(多租户)
AzureADandPersonalMicrosoftAccount:任何组织目录中的帐户 (多租户) 和个人 Microsoft 帐户 (例如,Skype、Xbox 和 Outlook.com)
PersonalMicrosoftAccount:仅个人 Microsoft 帐户

解决:

将signInAudience 改为:AzureADMyOrg或PersonalMicrosoftAccount

image-20201210190914873

原因2:

包名中有安全组禁用的关键字

image-20210128144526962

解决:

发邮件给客服,让管理者增加白名单

x.2 Could not find com.microsoft.device.display:display-mask:0.3.0.1

解决:

在工程的build文件中添加以下依赖

allprojects {
repositories {
....
// 添加微软依赖
maven {
url 'https://pkgs.dev.azure.com/MicrosoftDeviceSDK/DuoSDK-Public/_packaging/Duo-SDK-Feed/maven/v1'
}
}
}

参考文档

微软文档

auth 2.0 授权