Я пытаюсь использовать учетную запись службы, чтобы поговорить с Admin SDK Directory API через .Net Client Library. Тем не менее, ответ, который я получаю, - это 400 Bad Request
с содержанием ответа json от "error":"invalid_grant"
.Почему моя учетная запись службы пытается связаться с Google API через OAuth2 Вернуть ошибку 'invalid_grant'?
Вот мой код
Public Sub New()
Dim _certificate = New X509Certificate2("c:\path\to\file.psk", "notasecret" _
, X509KeyStorageFlags.Exportable)
Dim _serviceAccountEmail = "[email protected]"
Dim _scopes As IList(Of String) = New List(Of String)()
_scopes.Add(directory_v1.DirectoryService.Scope.AdminDirectoryUserReadonly)
Dim credential = New ServiceAccountCredential(New
ServiceAccountCredential.Initializer(_serviceAccountEmail) With {
.Scopes = _scopes}.FromCertificate(_certificate))
Dim service = New directory_v1.DirectoryService(New BaseClientService.Initializer() With { _
.HttpClientInitializer = credential,
.ApplicationName = "AeriesConnect"})
Dim request = service.Users.List()
request.Domain = "my.domain.com"
Dim users As directory_v1.Data.Users = request.Execute()
For Each user In users.UsersValue
System.Diagnostics.Debug.WriteLine("userName ID: " & user.Id)
Next
End Sub
Service Object
Мой служебный объект имеет следующие свойства. Все остальные свойства пустые сборники UsersResource
или GroupsResource
service.BaseUri = 'https://www.googleapis.com/admin/directory/v1"
service.HttpClientInitializer Свойства
Обратите внимание, что свойство Токен пуст. Это имеет значение? Кажется, так оно и есть. Это моя вина?
Объект запроса
Я получаю ошибку прямо на выполнение и исключение из Google и является Google.Apis.Auth.OAuth2.Responses.TokenResponseException
.
Я думаю, что я предоставил все разрешения, необходимые мне НО НОТА имейте это в виду, это для учетной записи Google Apps для образования.
- При входе в качестве суперпользователя в Консоль разработчика я создал проект и включил API-интерфейс администратора SDK. Я также создал учетные данные.
- Как в этом GAFE в «Super User», я пошел в «Безопасность -> Расширенные настройки -> Управление API клиентского доступа» область и added my Client ID (не по электронной почте) и объем, как
https://www.googleapis.com/auth/admin.directory.user
заголовка запроса
Мой запрос заголовок, который POST
к https://accounts.google.com/o/oauth2/token
имеет этот
assertion=eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJzY29wZSI6Imh0dHBzOi8vd3d3L
mdvb2dsZWFwaXMuY29tL2F1dGgvYWRtaW4uZGlyZWN0b3J5LnVzZXIiLCJpc3MiOiI2OTY3MTQyNzg2OS1hb
XFmMjVzY204Y2N1azhycHJrMDQ2djAzb2cybGducEBkZXZlbG9wZXIuZ3NlcnZpY2VhY2NvdW50LmNvbSAiLC
JhdWQiOiJodHRwczovL2FjY291bnRzLmdvb2dsZS5jb20vby9vYXV0aDIvdG9rZW4iLCJleHAiOjE0MTQ2MTY
3NDMsImlhdCI6MTQxNDYxMzE0M30.T9H-3tgOQSNdSj3MrUjJNNR5YqsxuJ97bCMJrrEJQ1Noewyv2mj
Dp96AZSZmzSxseAWrgptUv7sR4Mi21CWNACmjQjWPw8BI48sAyIclUPq6UhtMhRZDB1xX7t-Tq8NSbddJt
yJWxTc-IEAT7ixVpjjrosdG8Zcs0MgTuUgKHb8
&grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Ajwt-bearer
... и последние биты I t чувствую себя не так. Почему возникает ощущение, что он внезапно кодируется в HTML?
Вопрос
Что я сделал не так? Я предполагаю, что думаю, что я не аутентифицирован. Но что мне нужно делать по-другому? Я использовал theirexamples, чтобы помочь, но я не могу это понять.
Как выглядит ваш запрос после запроса. – Codexer
И ваше обслуживание после того, как вы объявили этот объект? – Codexer
invalid_grant обычно означает, что часы вашего сервера не синхронизируются с NTP. (Решение: проверьте время сервера, если его неправильно исправить.) Учетной записи службы должен быть предоставлен доступ к учетной записи, к которой вы хотите получить доступ, используя адрес электронной почты, такой как любой другой пользователь. – DaImTo