web-dev-qa-db-ja.com

Google Calendar API v3アクセスが設定されていません

GoogleのAPIのv3を使用して、クライアントの公開カレンダーからイベントのリストを取得しようとしています。 API Explorer にカレンダーIDを入力すると、肯定的な結果が得られます。

https://www.googleapis.com/calendar/v3/calendars/rpsj44u6koirtq5hehkt21qs6k%40group.calendar.google.com/events?key={YOUR_API_KEY}`

=> [List of events here, as expected]

APIキーを作成するには、Google Developer Consoleでプロジェクトを作成し、パブリックAPIアクセスキー(API&auth> Credentials)を作成し、置き換えました{YOUR_API_KEY}上記の実際のキー。 Calendar APIがオンになっていることを確認しました(APIと認証> API)。このURLをブラウザーに貼り付けると、次のエラー応答が返されます。

{
 "error": {
  "errors": [
   {
    "domain": "usageLimits",
    "reason": "accessNotConfigured",
    "message": "Access Not Configured. The API is not enabled for your project, or there is a per-IP or per-Referer restriction configured on your API key and the request does not match these restrictions. Please use the Google Developers Console to update your configuration.",
    "extendedHelp": "https://console.developers.google.com"
   }
  ],
  "code": 403,
  "message": "Access Not Configured. The API is not enabled for your project, or there is a per-IP or per-Referer restriction configured on your API key and the request does not match these restrictions. Please use the Google Developers Console to update your configuration."
 }
}

私が見たすべての回答は、Google Calendar APIがオンになっていることを確認する必要があると言っています。ここで何が欠けていますか?

18
sea_monster

GoogleのCalendar APIを使用すると、2、3時間イライラしました。他の人が困っている可能性のあるいくつかのソースからの過度に完全な(この質問の範囲を超えた)回答を文書化したいと思います。

最初に、あなたが私のようであれば、カレンダーの設定から公開アドレスを取得しました: enter image description here

私の公開カレンダーでは、そのXMLリンクは this ;でした。しかし、データは乱雑であり、古いバージョンのAPIを表していたと思います。少し調べてみると、v3 APIの正しいURL構造https://www.googleapis.com/calendar/v3/calendars/dl9fj86o2ohe7o823s7jar920s%40group.calendar.google.com/events?key={API_KEY}が見つかりました。

しかし、この質問のように、エラーが発生していました。以下をせよ:

1。プロジェクトを作成します

Google Developer Console に移動して、Create Projectをクリックしてください。私のアプリケーションは完全にフロントエンドであり、Google Developerプロジェクトが必要だとは思わなかったため、これに混乱しました。私は間違っていた;次のステップを実行するプロジェクトが必要でした。

2。プロジェクトのAPIキーを作成します

プロジェクトを作成したら、プロジェクト名をクリックし、APIs & auth> Credentialsに移動します。 [パブリックAPIアクセス]の下で、[Create new key> {KEY_TYPE}> Create;をクリックします。私の場合、完全にフロントエンドのアプリケーションを持っているので、{KEY_TYPE}Browser keyでした。今のところリファラーの入力をスキップします。これにより、上記のURL({API_KEY}と表示されている場所)に挿入するAPIキーが作成されます。

3。リファラーを追加する

ここまで到達したら、OPが話していたエラーが表示されるはずです。このエラーが発生する理由は、カレンダーが公開されていても、指定されたドメインからのリクエストのみが許可されるためです。そのため、カレンダーのIDとAPIキーを公開することができ、別の開発者はそれを許可しないとプログラムからカレンダーにアクセスできません。

これを解決するには、APIs&auth> Credentialsの下のEdit allowed referersをクリックし、(1)作成するドメインの名前を追加しますAPIへのリクエスト。(2)ローカルで開発している場合はhttp://localhost:{PORT}/*。必ずワイルドカードを最後に追加してください。

4。許可されたドメインからHTTPリクエストを作成します

この設定をすべて行った後、ブラウザにURLを貼り付けるだけではエラーが発生します。これは、許可したドメインの1つから要求を送信する必要があるためです。作成中のアプリケーションからリクエストを行うだけです。私の場合、JavaScript(jQuery)は次のようになります。

$.ajax({
    type: 'GET',
    url: {MY_URL},
    success: function(data) {
        // Throw a debugger statement in here,
        // and you should be able to inspect your data.
    }
});
25
gwg

公開カレンダーにアクセスするためにOAuth 2.0は必要ありません。

最初に説明したsea_monsterと同じ問題がありましたが、公開APIアクセスキーを挿入し、APIが有効になっていることを確認しましたが、次のようなエラーが常に表示されました。

403、AccessNotConfigured、APIが有効になっていません...

ソリューション

Google Developer Consoleに移動し、プロジェクトを選択し、「APIs an Auth」、「APIs」の左側をクリックして、Calendar APIを選択する必要がありました。オンになっていますが、APIを非アクティブにし、メッセージを待ってから、再度APIをオンにしなければなりませんでした。これでコードが機能し、変更する必要はありませんでした!

5
quicknik

私は同じ問題に直面し、私の問題は、projectGoogle API

enter image description here

ここで、Google APIの名前は「App Example」です

問題を解決するために、プロジェクトの名前を「App Example」に変更しました

        public MakeRequestTask(GoogleAccountCredential credential) {
            HttpTransport transport = AndroidHttp.newCompatibleTransport();
            JsonFactory jsonFactory = JacksonFactory.getDefaultInstance();
            mService = new com.google.api.services.calendar.Calendar.Builder(
                    transport, jsonFactory, credential)
                    .setApplicationName("App Example")
                    .build();
        }
2
Jorge Casariego

[APIマネージャー]> [ダッシュボード]> [APIを有効にする]に移動し、[URL Shortener API]を検索または選択し、[有効にする]ボタンを選択します。

2
MohammadSoori