Access Not Configured for Android Calendar API

2019-09-01 10:38发布

问题:

I'm trying to access the google calendar api using its java/android API (I followed the example from: http://samples.google-api-java-client.googlecode.com/hg/calendar-android-sample/instructions.html).

What I do is the following:

private static final List<String> SCOPES = Arrays.asList(CalendarScopes.CALENDAR,
                                             CalendarScopes.CALENDAR_READONLY);   


private HttpTransport httpTransport = AndroidHttp.newCompatibleTransport();
private JsonFactory jsonFactory = GsonFactory.getDefaultInstance();
private GoogleAccountCredential credential;

@Override
protected void onCreate(Bundle savedInstanceState) {
  credential = GoogleAccountCredential.usingOAuth2(this, SCOPES);
  user = (User) getIntent().getExtras().getSerializable(User.KEY);
  credential.setSelectedAccountName(user.getEmail()); 
  // user.getEmail() is the value I previously retrieved from the selected 
  // android.accounts.Account.name

  Calendar cal = new Calendar.Builder(httpTransport, jsonFactory, credential)
                    .setApplicationName("TestApp/1.0")
                    .build();
}

When I later call want to retrieve the calendarlist by doing this:

String pageToken = null;
do {
  CalendarList calendarList = cal.calendarList()
                                 .list()
                                 .setPageToken(pageToken)
                                 .execute();
  calendars.addAll(calendarList.getItems());
  pageToken = calendarList.getNextPageToken();
} while (pageToken != null);

I get an error:

{
  "code": 403,
  "errors": [
    {
      "domain": "usageLimits",
      "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.",
      "reason": "accessNotConfigured",
      "extendedHelp": "https://console.developers.google.com"
    }
  ],
  "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."
}

Can anyone help me to solve this problem? Thanks!

回答1:

I found the error. I didn't use the full package name for the API-Key. After I made sure that the package name used in the API-Key is equal to the package name defined in the AndroidManifest.xml it worked.