无法通过R对Google翻译进行身份验证

时间:2020-01-22 19:53:46

标签: r google-translate google-translation-api

因此,我尝试在Rstudio中使用 gl_translate函数到500,000个字符,这意味着我必须对我的Google翻译API进行身份验证。问题是我两个月前用旧的Google帐户尝试过,而现在我正在使用新的帐户。

因此,当我尝试使用新的Google帐户对新的 client_id 进行身份验证时,收到一条错误消息,提示我尚未启用我的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 个答案:

答案 0 :(得分:1)

24小时后我发现了。

显然,这确实很容易。我只是遵循了此link的步骤。 但是昨天我弄错了,因为我下载的json文件是来自服务客户端ID 的json文件,而我实际上需要来自服务帐户的json文件。

然后使用以下代码安装 googleLanguageR 软件包:

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

,然后仅在GL_AUTH参数中设置我下载的Google Project JSON文件的文件位置,如下所示:

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

现在我很高兴:)