Аутентификация на Google Диске в VB.NET для скачивания файла - PullRequest
0 голосов
/ 28 марта 2019

Моя цель - загрузить файл с Google Drive с помощью Drive API v3 и VB.NET.

Я установил свои учетные данные в консоли Google: в разделе «Идентификаторы клиента OAuth 2.0» япоместите "http://localhost" в" Авторизованные URI перенаправления "и в" Авторизованные источники JavaScript "и получите мой секретный файл клиента. Я нахожусь на ASP.NET 4.0 с использованием пакета NuGet Google.Apis.Drive.v3.

Ошибка возникает в строке «credential = GoogleWebAuthorizationBroker.AuthorizeAsync». Появляется новая вкладка Chrome, в которой говорится:

Это ошибка.Ошибка: redirect_uri_mismatch URI перенаправления в запросе http://localhost:9895/authorize/, не совпадает с авторизованным для клиента OAuth.Чтобы обновить авторизованные URI перенаправления, посетите: https://console.developers.google.com/apis/credentials/oauthclient/[MyClientID]?project=[MyProjectNumber]

Однако каждый раз, когда я получаю другой номер порта.

   Public Function AuthenticateOauth() As DriveService
      ' Request authentication from a user using oAuth2
      Dim clientSecretJson = "C:\WebApps\PeruvianGuineaPig\App_Data\client_secret.json"
      Dim applicationName = "DriveApi"

      Try
         ' Permissions
         Dim scopes As String() = New String() {DriveService.Scope.DriveReadonly}
         Dim credential As UserCredential

         Using stream As New FileStream(clientSecretJson, FileMode.Open, FileAccess.Read)
            Dim credPath As String
            credPath = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal)
            credPath = Path.Combine(credPath, ".credentials/", System.Reflection.Assembly.GetExecutingAssembly.GetName.Name)

            ' Requesting Authentication
            credential = GoogleWebAuthorizationBroker.AuthorizeAsync(GoogleClientSecrets.Load(stream).Secrets,
                                                                     scopes,
                                                                     "user",
                                                                     CancellationToken.None,
                                                                     New FileDataStore(credPath, True)).Result
         End Using

         ' Create Drive API service
         Dim Service = New DriveService(New BaseClientService.Initializer() With
                                    {.HttpClientInitializer = credential, .ApplicationName = applicationName})

         Return Service
      Catch ex As Exception
         Return Nothing
      End Try
   End Function

1 Ответ

0 голосов
/ 02 апреля 2019

Я не осознавал, что мне нужно открыть проект как веб-сайт (и выбрать его из моего списка локальных сайтов IIS), а не просто открыть файл Project / Solution.Теперь он использует номер порта, который я дал в IIS при отладке.

У меня сейчас другая проблема, но это уже другой вопрос ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...