CloudKit Web サービス API を使用して、Google Apps Script 内の運用 CloudKit コンテナーの公開データベースから記事レコードを取得しようとしています。
私のリクエストは、このページのドキュメントに基づいています。
これが私のコードです:
// variables for the CloudKit request URL
var path = "https://api.apple-cloudkit.com";
var version = "1";
var container = "iCloud.com.companyname.My-Container-Name";
var environment = "production";
var database = "public";
var token = "8888888888888_my_actual_token_88888888888888888"
function showArticles() {
// assemble the URL
var url = path + "/database/" + version + "/" + container + "/" + environment + "/" + database + "/records/query?ckAPIToken=" + token;
// specify the record type to query
var query = {
recordType: "Article"
};
// specify the payload for the POST request
var payload = {
query : query
};
// set up the fetch options for the fetch request
var options = {
method : "POST",
payload : payload
};
// make the request
var response = UrlFetchApp.fetch(url, options);
Logger.log(response);
}
UrlFetchApp.fetch(url, options)
このエラーで失敗します:
Request failed for https://api.apple-cloudkit.com/database/1/iCloud.<?>-Container-Name/development/public/records/query?ckAPIToken=8888888888888_my_actual_token_88888888888888888 returned code 401. Truncated server response: {"uuid":"7d8a8547-ad08-4090-b4b3-917868a42f6f","serverErrorCode":"AUTHENTICATION_FAILED","reason":"no auth method found"} (use muteHttpExceptions option to examine full response) (line 30, file "Code")
数時間トラブルシューティングを行ってきましたが、何が間違っているのかわかりません。開発環境でも別のトークンで試してみましたが、同じことが起こります。
このページにはパラメータが記載ckWebAuthToken
されており、「省略して必要な場合、リクエストは失敗します」と書かれていますが、どのリクエストにckWebAuthToken
. ckWebAuthToken
アクセスしようとしているレコードはコンテナーの公開データベースにあるため、必要ないと思いますが、AUTHENTICATION_FAILED
エラーではなくAUTHENTICATION_REQUIRED
エラーが発生しています。
私を混乱させるのは、エラー メッセージに表示される次の URL です。
https://api.apple-cloudkit.com/database/1/iCloud.<?>-Container-Name/development/public/records/query?ckAPIToken=8888888888888_my_actual_token_88888888888888888
私はそれが次のようになることを期待します:
https://api.apple-cloudkit.com/database/1/iCloud.com.companyname.My-Container-Name/development/public/records/query?ckAPIToken=8888888888888_my_actual_token_88888888888888888
しかし、それが実際に要求されている URL であるかどうかはわかりませんurl
。変数をログに記録すると、すべて問題ないように見えます。
トラブルシューティングのヒントや解決策をお寄せいただきありがとうございます。
アップデート
Postman を使用してみましたが、リクエストは同じエンドポイントと POST データで機能しました。URLのcontainer
コンポーネントが Google Apps ScriptUrlFetchApp.fetch()
メソッドによって破損しているようです。が URL にある<?>
場合にのみ表示されるようです。com.