API Google keep отвечает недопустимой областью при использовании документированных областей

#vb.net #winforms

#.net #vb.net #winforms #google-api #google-keep-api

Вопрос:

Выше проблема

Я пытаюсь получить токен доступа для чтения данных из моей собственной учетной записи Google с помощью vb.net окно формы приложения . Я что-то пропустил?

Почему он должен открывать веб-браузер для авторизации? Мне просто нужно получить доступ только к моим собственным данным.

Код формы окна

 Private Async Sub GetToken()
    Dim scopes As New List(Of String)
    scopes.Add(KeepService.Scope.Keep)

    Dim stream = New FileStream("file path.json", FileMode.Open)
    Dim _userCredentials As UserCredential = 
        Await Google.Apis.Auth.OAuth2.GoogleWebAuthorizationBroker.AuthorizeAsync(
        GoogleClientSecrets.Load(stream).Secrets, scopes, "user", System.Threading.CancellationToken.None)
End Sub
 

Сведения об ошибке

Ошибка авторизации Ошибка 400: invalid_scope Некоторые запрошенные области не могут быть показаны: [https://www.googleapis.com/auth/keep ]

введите описание изображения здесь

Комментарии:

1. это говорит о том, что область недопустима, попробуйте что-то вроде profile вместо

2. это нормально, но позволит ли мне загружать свои собственные данные в качестве администратора API?

3. Какой тип данных вы хотите загрузить? Есть ли раздел, в котором вы можете просмотреть свое зарегистрированное приложение и посмотреть, какие области определены?

4. Загрузка данных — это второстепенная задача, во-первых, Google даже не позволяет мне авторизовать собственный api, используя мои собственные учетные данные api. похоже, что нет такого API Google, который позволял бы мне загружать мои собственные данные Google Keep без аутентификации на основе веб-браузера.

5. @Pankaj без взаимодействия с пользователем называется авторизацией учетной записи службы. Это полностью отличается от того, что вы делаете сейчас, используя Oauth2 для авторизации пользователя. Из того, что я могу сказать, это ошибка в api, не связанная с типом авторизации, которую вы пытаетесь использовать.

Ответ №1:

Если мы проверим документацию для метода Notes.list, вы заметите, что в нем указано, что вам нужно использовать одну из следующих областей

введите описание изображения здесь

Я протестировал его со следующим кодом C #

  var credential = await GoogleWebAuthorizationBroker.AuthorizeAsync(GoogleClientSecrets.FromFile(clientSecretJson).Secrets,
                new []{KeepService.ScopeConstants.KeepReadonly, KeepService.ScopeConstants.Keep},
                "userName",
                CancellationToken.None,
                new FileDataStore("credPath", true));
            
            
            var service = new KeepService(new BaseClientService.Initializer()
            {
                HttpClientInitializer = credential,
                ApplicationName = "Google Keep Oauth2 Authentication Sample"
            });

            var notes = await service.Notes.List().ExecuteAsync();
 

В обоих случаях я получаю следующее сообщение об ошибке

введите описание изображения здесь

Как вы можете видеть из сообщения об ошибке, библиотека передает правильную область, как указано в документации. Сам API Google keep отказывается от области.

На мой взгляд, это ошибка в API, и я опубликовал проблему в системе отслеживания проблем 210500028

Обновление 16-12-2021: Google проверил эту ошибку и теперь проводит внутреннее расследование.

рабочее пространство

Об этом api есть примечание. Похоже, что он может работать только с учетными записями домена Workspace. Я тестировал его с обычной учетной записью Gmail, а также с учетной записью домена Workspace. Результаты были такими же.

Этот API является корпоративным API, используемым для создания заметок Keep в вашем домене и управления ими, включая решение проблем, выявленных программным обеспечением CASB.

Комментарии:

1. это работает, если мы добавляем только область электронной почты, но в конце мне пришлось столкнуться с проблемой разрешения. Вот скриншот. i.stack.imgur.com/TeCFQ.png

2. Это не часть исходного вопроса, возможно, вы захотите открыть новый вопрос.. убедитесь, что пользователь, которому вы разрешаете, имеет доступ к учетной записи домена workspace для использования этого API.

3. Теперь Google проверил это как ошибку. И проводят внутреннее расследование.

Ответ №2:

Я уже оказывал поддержку в решении проблем с Keep API, поскольку у администраторов регулярно возникают проблемы с этим API.

В настоящее время API Keep использует: …/auth/keep и …/auth/keep.области только для чтения для OAuth. Эти области не разрешены на экране согласия. Приложение, для которого требуются области хранения, может быть аутентифицировано, если вы как администратор домена предварительно утвердите область [области] для приложения или с помощью учетной записи службы:

Выполнение любого из двух описанных выше методов должно позволить вам использовать Keep API без запуска сообщения об ошибке недопустимой области.

Комментарии:

1. Как я могу предварительно утвердить области?

2. Вы можете сделать это как администратор, авторизовав области из приложения или через учетную запись службы, как я подробно описал, вам нужно будет создать небольшое приложение для выполнения авторизации, использование учетной записи службы было бы наиболее полезным, поэтому я бы рекомендовал сделать это таким образом.

3. Я проверил, что нет способа обойти область или предварительно утвердить их.