【问题标题】:gData: get account(self contact) first and last namegData:获取帐户(自我联系)名字和姓氏
【发布时间】:2012-04-06 15:51:39
【问题描述】:

我想使用 gdata 库获取 google 帐户的名字和姓氏。我有身份验证令牌(我从 android 设备获取它 - 将其发送到我的 java servlet - 然后应该将插入添加到 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...

我需要将其插入现有数据库。

请注意,我只需要帐户的信息,而不是联系人的信息。

谢谢,

亚历克斯

【问题讨论】:

  • 仍然没有人知道如何获取名字和姓氏?

标签: android oauth-2.0 gdata accountmanager


【解决方案1】:

请参阅来自 google 群组的 answer 以获取解决方案。问题是我无法使用从 android 获取的 auth_token 访问用户配置文件,因为它是客户端登录令牌,并且客户端登录没有访问用户配置文件的范围。我在 android 中集成了 OAUTH 登录,如 this 并返回令牌,我可以访问用户的个人资料。

亚历克斯。

【讨论】:

    猜你喜欢
    • 2012-10-11
    • 1970-01-01
    • 1970-01-01
    • 2013-06-11
    • 2011-05-17
    • 1970-01-01
    • 2013-01-20
    • 2019-01-06
    • 1970-01-01
    相关资源
    最近更新 更多