Неверные учетные данные API TableFusion NET [401] - PullRequest
0 голосов
/ 17 сентября 2018

Я использую этот код, найденный в StackOverflow, для управления FusionTable:

API:

Imports Google.Apis.Auth.OAuth2
Imports Google.Apis.Fusiontables.v2
Imports Google.Apis.Services
Imports Google.Apis.Upload

Учетные данные:

Dim scopes() As String = New String() {"oauth2:https://www.googleapis.com/auth/fusiontables"} 
Dim creds As GoogleCredential = GoogleCredential.FromStream(File.OpenRead("MYJASON.json")) 
creds.CreateScoped(scopes)

Я пробовал с:

Dim scopes() As String = New String() {FusiontablesService.Scope.Fusiontables}

Но тот же результат.

Затем

Dim service As FusiontablesService = New FusiontablesService(New BaseClientService.Initializer With {
            .HttpClientInitializer = creds,
            .ApplicationName = "MYAPPLICATION"
})

Затем

Dim result As TableResource = service.Table
If result IsNot Nothing Then
    Try
        Dim str As StreamReader = New StreamReader("MYFILE.csv")

        Dim UpStatus As IUploadProgress = service.Table.ReplaceRows("MYTABLE", str.BaseStream, "application/octet-stream").Upload()
        If UpStatus.Status = Google.Apis.Upload.UploadStatus.Failed Then
        Console.WriteLine(UpStatus.Exception)
        End If
    Catch ex As Exception
        Console.WriteLine(ex.Message)
    End Try
Else
    Console.WriteLine("Error Initializer")
End If

Ошибка при:

service.Table.ReplaceRows
UpStatus.Status = Google.Apis.Upload.UploadStatus.Failed

отл.Сообщение:

Google.Apis.Requests.RequestError Неверные учетные данные [401]

Что не так ??

У меня есть ключ API, 2 IDклиенты OAuth 2.0 и 1 идентификатор сервиса, ничего не работает.

1 Ответ

0 голосов
/ 21 сентября 2018

здесь решение, найденное в parte в stackoverflow

1 °) Создать учетную запись ключей учетной записи службы
2 °) Загрузите файл JSON
3 °) создать класс C #. Вы можете использовать (http://json2csharp.com/)

В моем случае это имя класса "JsonFileProperties"

4 °) Используйте этот код

 Dim scopes() As String = New String() {FusiontablesService.Scope.Fusiontables}
 Dim json As String = File.ReadAllText("MY.json")
 Dim JsonProperties As JsonFileProperties = Newtonsoft.Json.JsonConvert.DeserializeObject(Of JsonFileProperties)(json)
 Dim credential = New ServiceAccountCredential(New ServiceAccountCredential.Initializer(JsonProperties.client_email) With {
                .Scopes = scopes
                }.FromPrivateKey(JsonProperties.private_key))

 Dim service As FusiontablesService = New FusiontablesService(New BaseClientService.Initializer With {
                .HttpClientInitializer = credential,
                .ApplicationName = "*******",
                .ApiKey = "MYAPIKEY"
            })

5 °) Для доступа к редактированию таблиц обновлений (редактирование, удаление, importraws и т. Д.) Не забудьте разрешить присутствие почты в файле JSON в списке авторизованного пользователя для FusionTable

...