3

Недавно Google начал предоставлять нам ключевой файл Json для учетной записи службы вместо ключевого файла P12. Я пытался получить это, там не так много информации и какая информация, которую я видел, говорит, что это должно сработать.Загрузка учетной записи службы Json key file

string[] scopes = new string[] { DriveService.Scope.Drive}; 

Stream stream = new FileStream(jsonKeyFilePath, FileMode.Open, FileAccess.Read, FileShare.Read); 
var credential = GoogleCredential.FromStream(stream).CreateScoped(scopes); 

Однако его бросали следующее исключение

Ошибка при создании учетных данных из JSON. Нераспознанный тип учетных данных.

Я проверил дважды файл ключа json, загруженный двумя разными, пытаясь заставить его ничего не работать.

ответ

0

Я думаю, что сначала надо десериализовать поток, по крайней мере, что я нашел на сайте: https://github.com/google/google-api-dotnet-client/blob/a5288c4493a12791b46f7142efacb83c4fcacf58/Src/Support/GoogleApis.Auth.PlatformServices_Shared/OAuth2/DefaultCredentialProvider.cs#L169

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

+0

Link, к сожалению, больше не работает – tommed

+0

Файл доступен теперь здесь: https://github.com/google/google-api-dotnet -client/BLOB/a5288c4493a12791b46f7142efacb83c4fcacf58/Src/Поддержка/GoogleApis.Auth.PlatformServices_Shared/OAuth2/DefaultCredentialProvider.cs. Я обновил свой комментарий с помощью правильной ссылки – peleyal

1

Я загрузил файл ключа json учетной записи службы и попробовал тот же код, и он отлично работает. Я смог реплицировать проблему, если я вручную исказил поле типа в файле ключа json. Можете ли вы повторно загрузить файл ключа json и повторите попытку. Вот что ключевой файл JSON должен выглядеть (конфиденциальные данные удалены):

{ 
    "type": "service_account", 
    "project_id": ..., 
    "private_key_id": ..., 
    "private_key": ..., 
    "client_email": ..., 
    "client_id": ..., 
    "auth_uri": "https://accounts.google.com/o/oauth2/auth", 
    "token_uri": "https://accounts.google.com/o/oauth2/token", 
    "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", 
    "client_x509_cert_url": ... 
} 
Смежные вопросы