Учетная запись OneDrive для бизнеса не работает с MS Graph SDK - PullRequest
0 голосов
/ 29 декабря 2018

Я реализовал доступ к файлам OneDrive с помощью Graph SDK из https://github.com/microsoftgraph/msgraph-sdk-android

. Для аутентификации я использую тот же подход, что и в Образце подключения , в котором используется библиотека MSAL,т. е. compile ('com.microsoft.identity.client:msal:0.1.+') в файле build.gradle.

Я звоню mPublicClientApp.acquireToken с String[] scopes = {"offline_access", "https://graph.microsoft.com/Files.ReadWrite","https://graph.microsoft.com/User.Read"}; и успешно извлекаю accessTokens для личных и деловых учетных записей.

Далее я хочусохранить файл в OneDrive пользователя, используя

client.getDrive()
                .getRoot()
                .getItemWithPath("file.txt")
                .getContent()
                .buildRequest()
                .put(data);

, который работает, как и ожидалось, с личной учетной записью, но не работает с 403: Forbidden при использовании моей бизнес-учетной записи (кстати, пользователь приложения на портале Azure),Точно так же я получаю 404: Not found, если я пытаюсь получить DriveItem для файла, который существует (и также работает для личной учетной записи).

Что-то не так с моим кодом или похоженеправильная конфигурация приложения?(Я использую «режим предварительного просмотра» на портале Azure).Разрешения, которые я добавил,

Files.ReadWrite

Delegiert

Have full access to user files

-
offline_access

Delegiert

Access user's data anytime

-
User.Read

Delegiert

Sign in and read user profile

-
User.ReadWrite

Delegiert

Read and write access to user profile

-

Это мой полный манифест (с некоторыми удаленными идентификаторами):

{
    "id": "...",
    "acceptMappedClaims": null,
    "accessTokenAcceptedVersion": 2,
    "allowPublicClient": true,
    "appId": "...",
    "appRoles": [],
    "oauth2AllowUrlPathMatching": false,
    "createdDateTime": "2018-12-24T08:51:51Z",
    "groupMembershipClaims": null,
    "identifierUris": [
        "api://..."
    ],
    "informationalUrls": {
        "termsOfService": null,
        "support": null,
        "privacy": null,
        "marketing": null
    },
    "keyCredentials": [],
    "knownClientApplications": [],
    "logoUrl": null,
    "logoutUrl": null,
    "name": "...",
    "oauth2AllowIdTokenImplicitFlow": false,
    "oauth2AllowImplicitFlow": false,
    "oauth2Permissions": [
        {
            "adminConsentDescription": "blub",
            "adminConsentDisplayName": "bla",
            "id": "d3659b01-433e-44eb-ab39-9ee9c19f7fe8",
            "isEnabled": true,
            "lang": null,
            "origin": "Application",
            "type": "User",
            "userConsentDescription": null,
            "userConsentDisplayName": "read files",
            "value": "Files.ReadWrite"
        }
    ],
    "oauth2RequirePostResponse": false,
    "optionalClaims": null,
    "orgRestrictions": [],
    "parentalControlSettings": {
        "countriesBlockedForMinors": [],
        "legalAgeGroupRule": "Allow"
    },
    "passwordCredentials": [],
    "preAuthorizedApplications": [],
    "publisherDomain": "crocoapps.onmicrosoft.com",
    "replyUrlsWithType": [
        {
            "url": "https://login.microsoftonline.com/common/oauth2/nativeclient",
            "type": "InstalledClient"
        },
        {
            "url": "msal8374f.................d9b2://auth",
            "type": "InstalledClient"
        },
        {
            "url": "https://login.live.com/oauth20_desktop.srf",
            "type": "InstalledClient"
        }
    ],
    "requiredResourceAccess": [
        {
            "resourceAppId": "00000003-0000-0000-c000-000000000000",
            "resourceAccess": [
                {
                    "id": "7427e0e9-2fba-42fe-b0c0-848c9e6a8182",
                    "type": "Scope"
                },
                {
                    "id": "5c28f0bf-8a70-41f1-8ab2-9032436ddb65",
                    "type": "Scope"
                },
                {
                    "id": "e1fe6dd8-ba31-4d61-89e7-88639da4683d",
                    "type": "Scope"
                },
                {
                    "id": "b4e74841-8e56-480b-be8b-910348b18b4c",
                    "type": "Scope"
                }
            ]
        }
    ],
    "samlMetadataUrl": null,
    "signInUrl": null,
    "signInAudience": "AzureADandPersonalMicrosoftAccount",
    "tags": [],
    "tokenEncryptionKeyId": null
}

1 Ответ

0 голосов
/ 30 декабря 2018

Я думаю, что ваши replyUrlsWithType значения не содержат правильные значения.Этот список должен содержать URL-адреса, на которые Azure AD будет перенаправлен после выдачи токена.

Взято из Манифест приложения Azure Active Directory :

replyUrlsWithType

Это многозначное свойство содержит список зарегистрированных значений redirect_uri, которые Azure AD примет в качестве пунктов назначения при возврате токенов.Каждое значение URI должно содержать соответствующее значение типа приложения.Поддерживаемые значения типа: Web, InstalledClient.

Надеюсь, это поможет!

...