繁体   English   中英

列出Google日历中的所有事件

[英]List all events from Google calendar

我想使用以下代码列出Google日历中的所有事件:

public class GoogleCalendarImpl
{
    private static final String APPLICATION_NAME = "";
    private static final java.io.File DATA_STORE_DIR = new java.io.File(System.getProperty("user.home"), ".store/calendar_sample");
    private static FileDataStoreFactory dataStoreFactory;
    private static HttpTransport httpTransport;
    private static final JsonFactory JSON_FACTORY = JacksonFactory.getDefaultInstance();

    private static com.google.api.services.calendar.Calendar client;

    static final java.util.List<Calendar> addedCalendarsUsingBatch = Lists.newArrayList();

    private static final String calId = "edrhrtherherh@development-1384.iam.gserviceaccount.com";

    private static Credential authorize() throws Exception
    {
        // load client secrets
        GoogleClientSecrets clientSecrets = GoogleClientSecrets.load(JSON_FACTORY,
            new InputStreamReader(GoogleCalendarImpl.class.getResourceAsStream("/development-241a19899242.json")));

        GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder(
            httpTransport, JSON_FACTORY, clientSecrets,
            Collections.singleton(CalendarScopes.CALENDAR)).setDataStoreFactory(dataStoreFactory).build();
        return new AuthorizationCodeInstalledApp(flow, new LocalServerReceiver()).authorize("user");
    }

    public static void main(String[] args)
    {
        try
        {
            httpTransport = GoogleNetHttpTransport.newTrustedTransport();
            dataStoreFactory = new FileDataStoreFactory(DATA_STORE_DIR);
            Credential credential = authorize();
            client = new com.google.api.services.calendar.Calendar.Builder(
                httpTransport, JSON_FACTORY, credential).setApplicationName(APPLICATION_NAME).build();

            getAllEvents();

        }
        catch (IOException e)
        {
            System.err.println(e.getMessage());
        }
        catch (Throwable t)
        {
            t.printStackTrace();
        }
        System.exit(1);
    }

    private static List<Event> getAllEvents() throws IOException
    {
        List<Event> events = new ArrayList<>();
        String nextPageToken = null;
        do
        {
            System.out.println("Loading page " + nextPageToken);
            Events feed = client.events().list(calId).setPageToken(nextPageToken).execute();
            events.addAll(feed.getItems());
            nextPageToken = feed.getNextPageToken();
        }
        while (nextPageToken != null);

        return events;
    }
}

但是,当我运行代码时,Firefox(默认的网络浏览器)已启动,并重定向到页面:

Error: redirect_uri_mismatch

The redirect URI in the request, http://localhost:56345/Callback, does not match the ones authorized for the OAuth client. Visit https://console.developers.google.com/apis/credentials/oauthclient/1024206104045435454813?project=762076316631 to update the authorized redirect URIs.

我想将所有从Google日历输入的信息都配置到我的帐户中。

如何解决此问题?

如何修复错误:redirect_uri_mismatch

在此处输入图片说明 转到您的GDC并检查您指定为URI重定向的内容。 它应该是http://localhost:portnumber/oauth2callback

不要忘记“ oauth2”部分。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM