无法获取日历数据的Google令牌com.google.android.gms.auth.UserRecoverableAuthException:NeedPermission

时间:2016-02-10 12:29:35

标签: android calendar google-calendar-api

以下是我的代码[https://developers.google.com/google-apps/calendar/quickstart/android][1]

获取谷歌日历活动,我的电子邮件用于获取谷歌开发者控制台的许可,但无法获取其他电子邮件数据

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;
    }

2 个答案:

答案 0 :(得分:0)

根据你的推荐。看起来用户已经被分配了令牌 那么你应该在你的onCanceled()

中使用这个代码
if (mLastError instanceof UserRecoverableAuthIOException) {
                    startActivityForResult(
                            ((UserRecoverableAuthIOException) mLastError).getIntent(),
                            MainActivity.REQUEST_AUTHORIZATION);
                } else {
                    mOutputText.setText("The following error occurred:\n"
                            + mLastError.getMessage());

答案 1 :(得分:0)

并且应在活动中包含以下活动结果方法

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);
}