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がオンになっていることを確認する必要があると言っています。ここで何が欠けていますか?
GoogleのCalendar APIを使用すると、2、3時間イライラしました。他の人が困っている可能性のあるいくつかのソースからの過度に完全な(この質問の範囲を超えた)回答を文書化したいと思います。
最初に、あなたが私のようであれば、カレンダーの設定から公開アドレスを取得しました:
私の公開カレンダーでは、その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.
}
});
公開カレンダーにアクセスするためにOAuth 2.0は必要ありません。
最初に説明したsea_monsterと同じ問題がありましたが、公開APIアクセスキーを挿入し、APIが有効になっていることを確認しましたが、次のようなエラーが常に表示されました。
403、AccessNotConfigured、APIが有効になっていません...
ソリューション:
Google Developer Consoleに移動し、プロジェクトを選択し、「APIs an Auth」、「APIs」の左側をクリックして、Calendar APIを選択する必要がありました。オンになっていますが、APIを非アクティブにし、メッセージを待ってから、再度APIをオンにしなければなりませんでした。これでコードが機能し、変更する必要はありませんでした!
私は同じ問題に直面し、私の問題は、projectとGoogle API
ここで、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();
}
[APIマネージャー]> [ダッシュボード]> [APIを有効にする]に移動し、[URL Shortener API]を検索または選択し、[有効にする]ボタンを選択します。