Я хочу использовать API Календаря Google для извлечения календарей, событий и т. Д. У меня есть токен аутентификации из класса AccountManager в Android.Таким образом, если пользователь вошел в систему с мобильного телефона, используя свою учетную запись Google, я могу легко получить связанный с ним токен аутентификации.После этого сделайте следующее:
public Calendar useCalendarAPI(final String accessToken) {
try{
HttpTransport transport = new NetHttpTransport();
AccessProtectedResource accessProtectedResource = new GoogleAccessProtectedResource(accessToken);
Calendar.Builder builder = Calendar.builder(transport, new JacksonFactory());
builder.setApplicationName("My App Name");
builder.setHttpRequestInitializer(accessProtectedResource);
JsonHttpRequestInitializer json = new JsonHttpRequestInitializer() {
public void initialize(JsonHttpRequest request) {
CalendarRequest calRequest = (CalendarRequest) request;
calRequest.setKey(Common.API_KEY);
calRequest.setOauthToken(accessToken);
}
};
builder.setJsonHttpRequestInitializer(json);
Calendar calendarService= builder.build();
if(calendarService!= null)
{
return calendarService;
}
else
return null;
}catch (Exception e) {
// TODO: handle exception
e.getMessage();
}
После этого я получу объект Calendar, называемый "calendarService".
public void getCalendarsList()
{
try
{
CalendarList calendarList = calendarService.calendarList().list().execute();
while (true) {
for (CalendarListEntry calendarListEntry : calendarList.getItems()) {
System.out.println(calendarListEntry.getSummary());
}
String pageToken = calendarList.getNextPageToken();
if (pageToken != null && !pageToken.equalsIgnoreCase("")) {
calendarList = calendarService.calendarList().list().setPageToken(pageToken).execute();
} else {
break;
}
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
Это скопировано из документации API Календаря Google.Проверьте эту ссылку здесь
Но я получаю исключение NullPointer в следующей строке
CalendarList calendarList = calendarService.calendarList().list().execute();
Пожалуйста, предложите что-нибудь.
Спасибо