не удалось подтвердить подлинность Google Translate в R - PullRequest
0 голосов
/ 22 января 2020

Поэтому я попытался использовать функцию gl_translate * от 1002 * до 500 000 символов в Rstudio, что означает, что я должен аутентифицировать свой API Google Translate. Проблема в том, что я пытался сделать это как два месяца go со своей старой учетной записью Google, и теперь я использую новую.

Поэтому, когда я пытался аутентифицировать новый client_id с моя новая учетная запись Google, я получил сообщение об ошибке, что мой API еще не был включен, который я включил его. Я перезапустил свой Rstudio, и теперь я получил это сообщение об ошибке:

020-01-22 19:01:24 -- Translating html: 147 characters - 
2020-01-22 19:01:24> Request Status Code: 403
Error: API returned: Request had insufficient authentication scopes.

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

Кто-нибудь может выяснить, в чем проблема с этим?

вот мой код R для аутентификации:

install.packages("googleAnalyticsR", dependencies = TRUE)
library(googleAnalyticsR)

install.packages("googleLanguageR")
library(googleLanguageR)

install.packages("dplyr")
library(dplyr)

library(tidyverse)

install.packages("googleAuthR")
library(googleAuthR)


client_id <- "107033903887214478396"
private_key <- "-----BEGIN PRIVATE KEY-----\nMIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQChPmvib1v9/CFA\nX7fG8b8iXyS370ivkufMmX30C6/rUNOttA+zMhamS/EO0uaYtPw44B4QdNzRsSGq\nm+0fQ5Sp1SHJaVPkoImuUXZdMlLO73pvY48nMmEFg7deoOZI+CNWZYgIvPY8whMo\nk4vKE2iyuG+pl9MT7dT6dwWNmXDWr8kgxAfryfVEUIeqaf+57Z9g3FfVPLARz4iH\nCaTu55hhbmo/XknUx0hPsrwBMPaNLGl2+o5MU1ZuIkl47EJvdL8CdUuEmb9qJDtv\nUyKqANlwFa7cVW8ij2tjFpjJ7bigRVJsI8odbsEbwmx1b5SLckDOQ7t4l8zERtmo\nUv5fxyNNAgMBAAECggEAApeLyWyL2IXcjPnc7OxG68kGwJQuoW/lnQLcpPcpIUm/\n1Vt/IxzLg2nWGqxmO48xPMLRiOcwA4jq5yCxi56c/avo6qFwUU0JWY2CrxXXge8U\nk0TQ8MrdB2cqI/HHMeYXP1TLfoR3GtvtzemtRhbQyIqxdNL1eC0LDump47BTQYg0\nVPuCxU3zXVIj+Qt0FZa+Pa/nAOGHf5b4ye56L7vxL2BCeRncuHdDcE6Ilkpz79Gv\nkXP1K5j22uEVCmobe1qRlq3BLx2Qimj4h8MI8CKiNS40tGR/oewJ5uMgmeCePYKv\nqSFOwCDvRkw9V2KdGu40WQFEq21mczlv9gMWhp2/EQKBgQDRmBZZM7ugIpo64wx6\nDFYhZo05LmMiwymIfWs2CibzKDeXPuy3OSytvTPVFCkG+RlcYthxAIAn1Z/qJ4UI\n+8c8Zwfg+toYtEa2gTYM2185vmnqQwqmAsaK+4xKZzgfqxie/CBuPzUOZO41q6P8\ni7A2KqXHcDb4SMqnkdGGLk/7+QKBgQDE8dBesgx4DsHFYg1sJyIqKO4d2pnLPkDS\nAzx5xvQuUcVCNTbugOC7e0vGxWmQ/Eqal5b3nitH590m8WHnU9UiE4HciVLe+JDe\nDe5CWzBslnncBjpgiDudeeEubhO7MHv/qZyZXMh73H2NBdO8j0uiGTNbBFoOSTYq\nsFACiCZu9QKBgE2KjMoXn5SQ+KpMkbMdmUfmHt1G0hpsRZNfgyiM/Pf8qwRjnUPz\n/RmR4/ky6jLQOZe6YgT8gG08VVtVn5xBOeaY34tWgxWcrIScrRh4mHROg/TNNMVS\nRY3pnm9wXI0qyYMYGA9xhvl6Ub69b3/hViHUCV0NoOieVYtFIVUZETJRAoGAW/Y2\nQCGPpPfvD0Xr0parY1hdZ99NdRQKnIYaVRrLpl1UaMgEcHYJekHmblh8JNFJ3Mnw\nGovm1dq075xDBQumOBU3zEzrP2Z97tI+cQm3oNza5hyaYbz7aVsiBNYtrHjFTepb\nT1l93ChnD9SqvB+FR5nQ2y07B/SzsFdH5QbCO4kCgYBEdRFzRLvjdnUcxoXRcUpf\nfVMZ6fnRYeV1+apRSiaEDHCO5dyQP8vnW4ewISnAKdjKv/AtaMdzJ5L3asGRWDKU\n1kP/KDBlJkOsOvTkmJ4TxbIhgcSI62/wqDBi5Xqw1ljR2mh8njzRwqDRKs12EtQ0\n9VaUDm7LCNTAskn2SR/o4Q==\n-----END PRIVATE KEY-----\n"

options(googleAuthR.client_id = client_id)
options(googleAuthR.client_secret =  private_key)

devtools::reload(pkg = devtools::inst("googleAnalyticsR"))
ga_auth()

на тот случай, если вам нужно узнать, как выглядит мой код перевода:

translate <- function(tibble) {

tibble <- tibble
count <- data.frame(nchar = 0, cumsum = 0) # create count file to stay within API limits

for (i in 1:nrow(tibble)) {

des <- pull(tibble[i,2]) # extract description as single character string

if (count$cumsum[nrow(count)] >= 80000) { # API limit check

  print("nearing 100000 character per 100 seconds limit, pausing for 100 seconds")

  Sys.sleep(100)

  count <- count[1,] # reset count file
}

if (grepl("^\\s*$", des) == TRUE) { # if description is only whitespace then skip

  trns <- tibble(translatedText = "", detectedSourceLanguage = "", text = "")

  } else { # else request translation from API

    trns <- gl_translate(des, target='en', format='html') # request in html format to anticipate html descriptions
}


tibble[i,3:4] <- trns[,1:2] # add to tibble

nchar = nchar(pull(tibble[i,2])) # count number of characters

req <- data.frame(nchar = nchar, cumsum = nchar + sum(count$nchar))

count <- rbind(count, req) # add to count file

if (nchar > 20000) { # addtional API request limit safeguard for large descriptions

  print("large description (>20,000), pausing to manage API limit")

  Sys.sleep(100)

  count <- count[1,] # reset count file
 }
}
return(tibble)
}

1 Ответ

1 голос
/ 23 января 2020

Я понял это через 24 часа.

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

Затем я устанавливаю пакет googleLanguageR с этим кодом:

remotes::install_github("ropensci/googleLanguageR")
library(googleLanguageR)

, а затем просто устанавливаю местоположение моего загружаемого файла Google Project JSON в аргументе GL_AUTH как это:

gl_auth("G:/My Drive/0. Thesis/R-Script/ZakiServiceAccou***************kjadjib****.json")

и теперь я счастлив:)

...