4

GData を使用して、Google OAuth を使用してサイトを承認したばかりのユーザーのメール アドレス、本名、およびプロファイル URL を取得しようとしています。

Google の OpenID フローを使用してリクエストする方法はわかっていますが、OpenID フローには、Google Apps ユーザーのドメインを要求してからでないと、ログイン先を送信できないという厳しい制限があります。少なくとも OAuth (または AuthSub) を使用します。の場合、ユーザーはどの Google アカウントにログインするかを尋ねられます。

4

2 に答える 2

1

これが可能かどうかはまだはっきりしていませんが、OpenID フローを使用して回避しています。ユニバーサル ログイン フローが追加されたことで、OpenID フローを避ける理由はなくなりました。

于 2010-07-23T16:42:55.327 に答える
1

ユーザーの連絡先フィードを取得すると、authorsメールと名前を提供するフィールドにアクセスできます。さらに、フィードのidフィールドは、連絡先の所有者の電子メール アドレスのようです。

既にセッションがある AuthSub (申し訳ありませんが、コードを OAuth に移行していません) のユーザーを想定して、名前が変更された (Scala の) 例token:

scala> val contacts_service = new ContactsService("foo")
contacts_service: com.google.gdata.client.contacts.ContactsService = com.google.gdata.client.contacts.ContactsService@3fd1acee

scala> contacts_service.setAuthSubToken(token, null)

scala> val feedUrl = new URL("https://www.google.com/m8/feeds/contacts/default/full?max-results=10000")
feedUrl: java.net.URL = https://www.google.com/m8/feeds/contacts/default/full?max-results=10000

scala> val feed = contacts_service.getFeed(feedUrl, classOf[ContactFeed])
feed: com.google.gdata.data.contacts.ContactFeed = {ContactFeed com.google.gdata.data.contacts.ContactFeed@271a95f8}

scala> feed.getId
res13: java.lang.String = user@example.com

scala> val p = feed.getAuthors.head
p: com.google.gdata.data.Person = com.google.gdata.data.Person@513b4686

scala> p.getEmail
res14: java.lang.String = user@example.com

scala> p.getName
res15: java.lang.String = Example User
于 2011-03-05T17:23:44.240 に答える