如何使用 Graph REST 对个人 OneDrive 进行身份验证 API
How to authenticate to personal OneDrive with Graph REST API
我正在尝试编写一个 R 程序包,让用户可以从 R 访问他们的 OneDrive 文件夹中的文件。API 是 Microsoft Graph。
OneDrive for Business(据我了解,它基本上是 SharePoint 的底层)一切正常。但是,我无法让它与个人 OneDrive 一起使用。
自定义应用程序注册,consumers
授权端点
当我在自己的 AAD 租户下使用应用程序注册时,我从 consumers
AAD 授权端点收到以下错误:
AADSTS50020: User account 'xxxxx@gmail.com' from identity provider 'live.com' does not exist in tenant 'Consumers' and cannot access the application 'd44a05d5-c6a5-4bbb-82d2-443123722380'(AzureRtest_cli) in that tenant. The account needs to be added as an external user in the tenant first. Sign out and sign in again with a different Azure Active Directory user account.
自定义应用程序注册,9188040d-6c67-4c5b-b112-36a304b66dad
端点
从 this page 看来,令牌应该用于租户 9188040d-6c67-4c5b-b112-36a304b66dad
而不是通用 consumers
。当我尝试这样做时,我获得了一个看似有效的令牌。但是,与 https://api.onedrive.com/v1.0/drive
端点通信会导致神秘的 401 错误。
Azure CLI 应用注册,consumers
端点
作为黑客,我尝试搭载 Azure CLI 的应用程序注册。这失败了
AADSTS65002: Consent between first party application '04b07795-8ddb-461a-bbee-02f9e1bf7b46' and first party resource '00000003-0000-0000-c000-000000000000' must be configured via preauthorization. Visit https://identitydocs.azurewebsites.net/static/aad/preauthorization.html for details
Azure CLI 应用注册,9188040d-6c67-4c5b-b112-36a304b66dad
终结点
最后,我尝试使用此租户的 CLI 应用程序注册,但也失败了:
unauthorized_client: The client does not exist or is not enabled for consumers. If you are the application developer, configure a new application through the App Registrations in the Azure Portal at https://go.microsoft.com/fwlink/?linkid=2083908.
我需要执行哪些具体步骤才能访问我的个人 OneDrive?
原来我的代码中有一个错误:我使用的是租户 consumers.onmicrosoft.com
而不是 consumers
。为我工作的个人 OneDrive 与 Graph 通信的过程是:
- 使用 here 所述的授权代码流程,具有以下规范:
- 租户:
consumers
- 客户端 ID:用于我的自定义应用程序注册
- 范围:
https://graph.microsoft.com/{scope} offline_access openid
其中范围是列出的范围之一 here
- 使用 API 端点
https://graph.microsoft.com/v1.0
。
关于最后一点,请注意文档 here 不正确或至少已过时,因为它仍然提供 https://api.onedrive.com/v1.0
作为个人 OneDrive 请求的端点。
我正在尝试编写一个 R 程序包,让用户可以从 R 访问他们的 OneDrive 文件夹中的文件。API 是 Microsoft Graph。
OneDrive for Business(据我了解,它基本上是 SharePoint 的底层)一切正常。但是,我无法让它与个人 OneDrive 一起使用。
自定义应用程序注册,consumers
授权端点
当我在自己的 AAD 租户下使用应用程序注册时,我从 consumers
AAD 授权端点收到以下错误:
AADSTS50020: User account 'xxxxx@gmail.com' from identity provider 'live.com' does not exist in tenant 'Consumers' and cannot access the application 'd44a05d5-c6a5-4bbb-82d2-443123722380'(AzureRtest_cli) in that tenant. The account needs to be added as an external user in the tenant first. Sign out and sign in again with a different Azure Active Directory user account.
自定义应用程序注册,9188040d-6c67-4c5b-b112-36a304b66dad
端点
从 this page 看来,令牌应该用于租户 9188040d-6c67-4c5b-b112-36a304b66dad
而不是通用 consumers
。当我尝试这样做时,我获得了一个看似有效的令牌。但是,与 https://api.onedrive.com/v1.0/drive
端点通信会导致神秘的 401 错误。
Azure CLI 应用注册,consumers
端点
作为黑客,我尝试搭载 Azure CLI 的应用程序注册。这失败了
AADSTS65002: Consent between first party application '04b07795-8ddb-461a-bbee-02f9e1bf7b46' and first party resource '00000003-0000-0000-c000-000000000000' must be configured via preauthorization. Visit https://identitydocs.azurewebsites.net/static/aad/preauthorization.html for details
Azure CLI 应用注册,9188040d-6c67-4c5b-b112-36a304b66dad
终结点
最后,我尝试使用此租户的 CLI 应用程序注册,但也失败了:
unauthorized_client: The client does not exist or is not enabled for consumers. If you are the application developer, configure a new application through the App Registrations in the Azure Portal at https://go.microsoft.com/fwlink/?linkid=2083908.
我需要执行哪些具体步骤才能访问我的个人 OneDrive?
原来我的代码中有一个错误:我使用的是租户 consumers.onmicrosoft.com
而不是 consumers
。为我工作的个人 OneDrive 与 Graph 通信的过程是:
- 使用 here 所述的授权代码流程,具有以下规范:
- 租户:
consumers
- 客户端 ID:用于我的自定义应用程序注册
- 范围:
https://graph.microsoft.com/{scope} offline_access openid
其中范围是列出的范围之一 here
- 租户:
- 使用 API 端点
https://graph.microsoft.com/v1.0
。
关于最后一点,请注意文档 here 不正确或至少已过时,因为它仍然提供 https://api.onedrive.com/v1.0
作为个人 OneDrive 请求的端点。