Как мне получить доступ к токенам доступа «me / account» через java с помощью restfb? - PullRequest
0 голосов
/ 28 января 2019

Я пытаюсь получить доступ к деталям страниц Facebook, на которых я работаю, через restfb.Я могу получить информацию о моем пользователе, но когда я пытаюсь получить информацию из «меня / учетных записей», он просто возвращает ноль.

Я пробовал использовать разные типы и классы, но все равно не показывает то, что мне нужно.Однако он работает нормально, используя инструмент API Graph Facebook

private void authUser (событие ActionEvent) {

    String appId = "(My App ID)";
    String domain = "https://www.google.com";
    String authUrl = "https://graph.facebook.com/oauth/authorize?type=user_agent&client_id="+appId+"&redirect_uri="+domain+"&scope=ads_management, ads_read, business_management, email, groups_access_member_info, leads_retrieval, manage_pages, pages_manage_cta, pages_manage_instant_articles, pages_messaging, pages_messaging_phone_number, pages_messaging_subscriptions, pages_show_list, publish_pages, publish_to_groups, publish_video, read_audience_network_insights, read_insights, read_page_mailboxes, user_age_range, user_birthday, user_events, user_friends, user_gender, user_hometown, user_likes, user_link, user_location, user_photos, user_posts, user_status, user_tagged_places, user_videos";

    System.setProperty("webdriver.chrome.driver", "chromedriver");

    WebDriver driver = new ChromeDriver();
    driver.get(authUrl);
    String accessToken;
    String accessToken2 = null;
    while(true){
        if(!driver.getCurrentUrl().contains("facebook")){
            String url = driver.getCurrentUrl();
            accessToken = url.replaceAll(".*#access_token=(.+)&.*","$1");
            int indexOfLast = accessToken.lastIndexOf("&");
            if(indexOfLast >=0) accessToken2 = accessToken.substring(0, indexOfLast);
            System.out.println(accessToken);
            System.out.println(accessToken2);

            driver.quit();
            driver = null;

            FacebookClient fbClient = new DefaultFacebookClient(accessToken2, com.restfb.Version.VERSION_3_2);

            User user = fbClient.fetchObject("me", User.class, Parameter.with("fields", "name, email"));

            User account = fbClient.fetchObject("me/accounts", User.class, Parameter.with("fields", "name"));

            name.setText(user.getName());
            id.setText(user.getId());

            if (user.getEmail() == null) {
                email.setText("Unable to show email");
            } else {
                email.setText(user.getEmail());
            }


            if (account.getName()== null) {
                System.out.println("Null");
            } else {
                System.out.println(account.getName());
            } 
        }
    } 
}
...