このエラーを得ているim
_{ "error":
{ "errors":
[
{ "domain": "calendar", "reason": "forbiddenForServiceAccounts", "message": "Service accounts cannot invite attendees without Domain-Wide Delegation of Authority." }
],
"code": 403,
"message": "Service accounts cannot invite attendees without Domain-Wide Delegation of Authority."
}
}
_
すでにこれに従っています https://developers.google.com/admin-sdk/directory/v1/guides/delegation
laravel 5.7 : https://github.com/spatie/Daravel-google-Calendar
これには修正ができれば。助けてください。
この作業を行うための手順は次のとおりです。
あなたのサービスアカウントでドメイン全体の委任を有効にする
1 - あなたのサービスアカウントにカレンダースコープを提供する
2 - あなたのユーザーは役割サービスアカウントトークン作成者を持つ必要があります
3 - 偽装するアカウントでカレンダーを作成する
サービスアカウントにはカレンダーがありませんので、独自のカレンダーを作成する必要があります。
Googleクライアントを作成する
コードサンプル:(私は使用PHP]を使用するが、他の言語が非常によく似ていることを想定しているので、これをガイドラインとして使用できます)
偽装のためにいくつかの電子メールを使用することは非常に重要です。それ以外の場合は、403エラーが残る、認証に使用するには、詳細についてはMaksym Kalin Responseを参照してください。
$google_client = new Google_Client();
$google_client->setAuthConfig($LOCATION_OF_JSON_KEY);
$google_client->setAccessType( 'offline' );
$google_client->setSubject('[email protected]');
$google_client->setApplicationName("YourApplicationName");
$google_client->setScopes([\Google_Service_Calendar::CALENDAR, \Google_Service_Calendar::CALENDAR_EVENTS]);
_
人が招待された人とイベントを作成します:)して楽しんでください!
注: このアプローチでは、イベントを作成し、人々を招待することができます。 G Suite _の制限 https://support.google.com/a/answer/2905486 SO)のプールを持つサービスアカウントを持つ必要がある場合は、カレンダー。
情報のためだけに
私の場合、Node.jsでは、@Anathornからの境骨が追いかけましたが、私は手に入れたままにしていました
サービスアカウントは、権限のドメイン全体の委任なしで出席者を招待することはできません。
それから私は私の認証行を電子メールに追加しました。
const auth = new google.auth.JWT(
CREDENTIALS.client_email,`
null,
CREDENTIALS.private_key,
SCOPES,
"[email protected]",
"12345678987654321"
);
_
この問題に遭遇している可能性がある他の誰かのために、それはアナトーンの答えとMaksym Kalinの答えの組み合わせでした。私はユーザーの電子メールアドレスを偽装していなかったからでした。
以前にユーザーが使用しているのと同じライブラリをコミットしようとしました(私もそれを使用しています)が、それはレポーナーによって拒否されました(どれだけ悲しい)
https://github.com/spatie/lavel-google-calendar/pull/97
とにかく、彼のコードは私が私の終わりにそれを修正する方法でした。
この問題を抱えている他の誰かのために頑張って、それは私のお尻の痛みが長すぎるのです。