1

gdata ライブラリを使用して、Google アカウントの姓名を取得したいと考えています。私は認証トークンを持っています(Androidデバイスから取得します-それをJavaサーブレットに送信します-次に、最初、最後、表示名、およびprovider_uidを使用してmysqlデータベースに挿入を追加する必要があります(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...

これを既存のデータベースに挿入する必要があります。

連絡先の情報ではなく、アカウントの情報のみが必要であることに注意してください。

ありがとう、

アレックス

4

1 に答える 1

0

解決策については、Google グループからのこの回答を参照してください。問題は、android から取得した auth_token を使用してユーザー プロファイルにアクセスできないことです。これはクライアント ログイン トークンであり、クライアント ログインにはユーザーのプロファイルにアクセスするためのスコープがありません。このようにAndroidにOAUTHログインを統合し、返されたトークンでユーザーのプロファイルにアクセスできます。

アレックス。

于 2012-04-06T07:51:39.013 に答える