无法为日历数据 com.google.android.gms.auth.UserRecoverableAuthException 获取 google 令牌:NeedPermission
Unable to get google token for calendar data com.google.android.gms.auth.UserRecoverableAuthException: NeedPermission
这是我的代码取自 [https://developers.google.com/google-apps/calendar/quickstart/android][1]
获取 google 日历事件它适用于我的电子邮件,该电子邮件用于从 google 开发人员控制台获得许可但无法获取其他电子邮件数据
private List<String> getDataFromApi() {
// List the next 10 events from the primary calendar.
DateTime now = new DateTime(System.currentTimeMillis());
List<String> eventStrings = new ArrayList<String>();
Events events = null;
try {
events = mService.events().list("primary")
.setMaxResults(30)
.setTimeMin(now)
.setOrderBy("startTime")
.setSingleEvents(true)
.execute();
} catch (IOException e) {
e.printStackTrace();
Log.d("Meeting Planner :", "in get data from api " + e.getMessage());
Log.d("Meeting Planner :", "in get data from api " + e.getLocalizedMessage());
Log.d("Meeting Planner :", "in get data from api " + e.toString());
//return null;
}
List<Event> items = events.getItems();
eventStrings.add(
String.format("%s (%s)", event.getSummary(), start));
}
return eventStrings;
}
根据您的参考。看起来用户还没有被分配令牌
那么您应该在 onCanceled ()
中使用此代码
if (mLastError instanceof UserRecoverableAuthIOException) {
startActivityForResult(
((UserRecoverableAuthIOException) mLastError).getIntent(),
MainActivity.REQUEST_AUTHORIZATION);
} else {
mOutputText.setText("The following error occurred:\n"
+ mLastError.getMessage());
并且应该在 activity
中包含以下 activity 结果的方法
protected void onActivityResult(
int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch(requestCode) {
case REQUEST_AUTHORIZATION:
if (resultCode != RESULT_OK) {
chooseAccount();
}
else {
//your code to call make request again
new MakeRequestTask(mCredential).execute();
}
break;
}
super.onActivityResult(requestCode, resultCode, data);
}
这是我的代码取自 [https://developers.google.com/google-apps/calendar/quickstart/android][1]
获取 google 日历事件它适用于我的电子邮件,该电子邮件用于从 google 开发人员控制台获得许可但无法获取其他电子邮件数据
private List<String> getDataFromApi() {
// List the next 10 events from the primary calendar.
DateTime now = new DateTime(System.currentTimeMillis());
List<String> eventStrings = new ArrayList<String>();
Events events = null;
try {
events = mService.events().list("primary")
.setMaxResults(30)
.setTimeMin(now)
.setOrderBy("startTime")
.setSingleEvents(true)
.execute();
} catch (IOException e) {
e.printStackTrace();
Log.d("Meeting Planner :", "in get data from api " + e.getMessage());
Log.d("Meeting Planner :", "in get data from api " + e.getLocalizedMessage());
Log.d("Meeting Planner :", "in get data from api " + e.toString());
//return null;
}
List<Event> items = events.getItems();
eventStrings.add(
String.format("%s (%s)", event.getSummary(), start));
}
return eventStrings;
}
根据您的参考。看起来用户还没有被分配令牌 那么您应该在 onCanceled ()
中使用此代码if (mLastError instanceof UserRecoverableAuthIOException) {
startActivityForResult(
((UserRecoverableAuthIOException) mLastError).getIntent(),
MainActivity.REQUEST_AUTHORIZATION);
} else {
mOutputText.setText("The following error occurred:\n"
+ mLastError.getMessage());
并且应该在 activity
中包含以下 activity 结果的方法protected void onActivityResult(
int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch(requestCode) {
case REQUEST_AUTHORIZATION:
if (resultCode != RESULT_OK) {
chooseAccount();
}
else {
//your code to call make request again
new MakeRequestTask(mCredential).execute();
}
break;
}
super.onActivityResult(requestCode, resultCode, data);
}