gData: получить учетную запись (сам контакт) - PullRequest
1 голос
/ 26 марта 2012

Я хочу получить имя и фамилию аккаунта Google с помощью библиотеки gdata.У меня есть токен аутентификации (я беру его с устройства Android - отправляю его на мой сервлет java - затем следует добавить вставку в базу данных mysql с первым, последним отображаемым именем и provider_uid (provider_uid имеет вид https://www.google.com/accounts/o8/id?id=AItOawmyn...)).

Я использовал фид контактов следующим образом (без успеха):

public String tryGoogleAuthentication(String auth_token){
    ContactsService contactsService = new ContactsService("...");
    contactsService.setUserToken(auth_token);
    //contactsService.setAuthSubToken(auth_token);

    ContactFeed feed = null;
    try {
        feed = contactsService.getFeed(new URL("https://www.google.com/m8/feeds/contacts/" + "someEmail@gmail.com" + "/full?max-results=10000"), ContactFeed.class);            
    } catch (IOException e) {
        e.printStackTrace();
        return CONST.GOOGLE_AUTH_INVALID_TOKEN;
    } catch (ServiceException e) {          
        e.printStackTrace();
        return CONST.GOOGLE_AUTH_INVALID_TOKEN;
    } catch (NullPointerException e) {
        e.printStackTrace();
        return CONST.GOOGLE_AUTH_INVALID_TOKEN;
    }

    if (feed == null)
        return "";

    String externalId = feed.getId();
    Person person = feed.getAuthors().get(0);
    String email = person.getEmail();
    String name = person.getName();
    String nameLang = person.getNameLang();
    String extensionLocalName = person.getExtensionLocalName();
    String uri = person.getUri();



    System.out.println("externalId: " + externalId);
    System.out.println("email: " + email);
    System.out.println("name: " + name);
    System.out.println("nameLang: " + nameLang);
    System.out.println("extension local name: " + extensionLocalName);
    System.out.println("URI: " + uri);   
    System.out.println(feed.getSelf().getEntries().get(0).getTitle().getPlainText());   


    return CONST.STATUS_OK;
}

Кроме того,

System.out.println("ID: "  + feed.getSelf().getEntries().get(0).getId());

будет выводить:

ID: http://www.google.com/m8/feeds/contacts/someEmail%40gmail.com/base/c....

, ноЯ хочу что-то вроде этого:

https://www.google.com/accounts/o8/id?id=AItOawmyn...

Мне нужно это вставить в существующую базу данных.

Обратите внимание, что мне нужна информация только для учетной записи, а не для ее контактов.

Спасибо,

Алекс

1 Ответ

0 голосов
/ 06 апреля 2012

Пожалуйста, посмотрите этот ответ из групп Google для разрешения. Проблема в том, что я не могу получить доступ к профилю пользователя с помощью auth_token, взятого с Android, потому что это токен Client Login, а Client Login не имеет области для доступа к профилю пользователя. Я интегрировал OAUTH логин в Android как this и с возвращенным токеном я могу получить доступ к профилю пользователя.

Alex.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...