Google Drive Redirect URI Несоответствие и как получить список файлов с Google Drive в ASP.net core 2.0 - PullRequest
0 голосов
/ 04 ноября 2018

В моем проекте я хочу добавить списки файлов с диска Google в свой проект. Я использую ASP.NET Core.

Я успешно создал проект в Google API Console и внедрил код в ядро ​​ASP.NET. Я получаю сообщение об ошибке Redirect URI Mismatch каждый раз, когда я запускаю программу, даже если я правильно установил URL перенаправления. Я не добился успеха.

Я использую Google drive API V3.

Это ошибка. Ошибка: redirect_uri_mismatch

URI перенаправления в запросе http://127.0.0.1:63354/authorize/, не совпадает с авторизованным для клиента OAuth.

Итак, я выполнил следующие шаги для своего основного проекта ASP.NET. (Сначала я попробовал в консольном проекте, и я получил успех) https://dzone.com/articles/authentication-using-google-in-aspnet-core-20

По этой ссылке я могу авторизоваться в Google, но не могу получить список файлов с Google Drive. Я не получаю никакой ошибки, и файлы считаются равными нулю.

using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Google.Apis.Auth.OAuth2;
using Google.Apis.Drive.v3;
using Google.Apis.Drive.v3.Data;
using Google.Apis.Services;
using Google.Apis.Util.Store;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;

namespace WebApplication.Controllers
{
    public class TestController : BaseController
    {
        public IActionResult Authenticate()
        {
            UserCredential credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
               new ClientSecrets
               {
                   ClientId = "",
                   ClientSecret = ""

               },
               new[] { DriveService.Scope.Drive },
               "user",
               CancellationToken.None).Result;


            var service = new DriveService(new BaseClientService.Initializer()
            {
                HttpClientInitializer = credential,
                ApplicationName = "WebApplication3",
            });

            FilesResource.ListRequest listRequest = service.Files.List();
            listRequest.PageSize = 10;
            listRequest.Fields = "nextPageToken, files(id, name)";


            IList<Google.Apis.Drive.v3.Data.File> files = listRequest.Execute()
                 .Files;

            ViewBag.filecount = files.Count;

            if (files != null && files.Count > 0)
            {
                foreach (var file in files)
                {
                   ViewBag.fileName = file.Name;
                }
            }
            return View("Test");

        }
    }
}

Ответы [ 2 ]

0 голосов
/ 05 ноября 2018

Я подозреваю, что ваша проблема - обычная проблема с использованием служебной учетной записи для доступа к Google Диску, но при ожидании просмотра файлов из вашей учетной записи пользователя. Это два разных аккаунта. Если вы ищете SO, этот вопрос задавался много раз. Решения

  1. не используйте служебную учетную запись,
  2. делитесь своими файлами с учетной записью сервиса.
0 голосов
/ 05 ноября 2018

Я думаю, что вам не хватает здесь, чтобы установить владельца диска, к которому вы хотите получить доступ. Вы можете передать параметр в listRequest следующим образом:

   listRequest.Q = 'me' in owner"

Вы можете добавить «я» в качестве владельца диска, к которому вы хотите получить доступ.

Для более подробной информации, вы можете проверить это ТАК сообщение .

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