我正在用Ruby编写一段代码,以使用Google Data Transfer API进行数据传输。我的意思是this
我的代码如下:
idOldUser = "116170568974079979335"
idNewUser = "105318746921076261308"
atp = Google::Apis::AdminDatatransferV1::ApplicationTransferParam.new(
key: "PRIVACY_LEVEL",
value: ["PRIVATE", "SHARED"])
appid = 435070579839
adt = Google::Apis::AdminDatatransferV1::ApplicationDataTransfer.new(
application_id: appid,
application_transfer_params: [atp])
dt = Google::Apis::AdminDatatransferV1::DataTransfer.new(
kind: "admin#datatransfer#DataTransfer",
old_owner_user_id: idOldUser,
new_owner_user_id: idNewUser,
application_data_transfers: [adt])
service = Google::Apis::AdminDatatransferV1::DataTransferService.new
service.insert_transfer(dt)
执行它时,出现以下错误:
/var/lib/gems/2.4.0/gems/google-api-client-0.23.4/lib/google/apis/core/http_command.rb:212:in `check_status': Unauthorized (Google::Apis::AuthorizationError)
from /var/lib/gems/2.4.0/gems/google-api-client-0.23.4/lib/google/apis/core/api_command.rb:118:in `check_status'
from /var/lib/gems/2.4.0/gems/google-api-client-0.23.4/lib/google/apis/core/http_command.rb:183:in `process_response'
我也尝试过从API Explorer执行它。下面的JSON返回HTTP200。几分钟后,我在新用户的收件箱中看到一封邮件,说明传输已完成。然后,我在“日历”应用中看到一个名为“从用户转移”的条目。但是,它似乎是空的。
{
"oldOwnerUserId": "116170568974079979335",
"newOwnerUserId": "105318746921076261308",
"kind": "admin#datatransfer#DataTransfer",
"applicationDataTransfers": [
{
"applicationId": "435070579839",
"applicationTransferParams": [
{
"key": "PRIVACY_LEVEL",
"value": [
"PRIVATE",
"SHARED"
]
}
]
}
]
}
我使用了这个范围:https://www.googleapis.com/auth/admin.datatransfer
奇怪的是,该库的其他方法(例如list_applications)对我有用。唯一的问题是insert_transfer。
您能帮我使此数据传输正常吗?如果Ruby有可能,那就太好了。
谢谢。
答案 0 :(得分:0)
我发现了问题。我必须在调用insert_transfer之前刷新令牌。
因此,工作代码如下:
idOldUser = "116170568974079979335"
idNewUser = "105318746921076261308"
atp = Google::Apis::AdminDatatransferV1::ApplicationTransferParam.new(
key: "PRIVACY_LEVEL",
value: ["PRIVATE", "SHARED"])
appid = 435070579839
adt = Google::Apis::AdminDatatransferV1::ApplicationDataTransfer.new(
application_id: appid,
application_transfer_params: [atp])
dt = Google::Apis::AdminDatatransferV1::DataTransfer.new(
kind: "admin#datatransfer#DataTransfer",
old_owner_user_id: idOldUser,
new_owner_user_id: idNewUser,
application_data_transfers: [adt])
service = Google::Apis::AdminDatatransferV1::DataTransferService.new
service.client_options.application_name = APPLICATION_NAME
service.authorization = authorize
service.insert_transfer(dt)
另一方面,我们发送的JSON上字段的顺序很重要。因此,如果更改顺序,我们将收到HTTP 200响应,而数据传输将永远不会执行。这就是为什么我从API Explorer发送的JSON无法正常工作的原因。