2

私たちは、Glass ユーザーがタイムライン カードからメールを送信するようにリクエストできるようにしようとしています。通知コールバック サーブレットでは、ユーザーの電子メール アドレスを取得するために次のことを試みています。

    String userId = notification.getUserToken();
    Credential credential = AuthUtil.getCredential(userId);
    Mirror mirrorClient = MirrorClient.getMirror(credential);
    Contact contact = MirrorClient.getContact(credential, userId);

認証されたユーザーの UserInfo オブジェクトから電子メールを取得すると、結果が返されません。このアプリケーションには、アプリケーション サーバーで使用できる次のスコープがあります。

"https://www.googleapis.com/auth/glass.timeline "
"https://www.googleapis.com/auth/glass.location "
"https://www.googleapis.com/auth/userinfo.profile "
"https://www.googleapis.com/auth/userinfo.email "
"https://www.googleapis.com/auth/contacts"

認証されたユーザーの電子メール アドレスを取得することは許可されていますか? 権限が不足していますか? またはそのデータを要求する別の手段はありますか?

4

2 に答える 2

1

あなたが行っている getContact 呼び出しは、ユーザーの電子メール アドレスとは何の関係もありません。ここで連絡先が何を参照しているかを読むことができます:
https://developers.google.com/glass/contacts

ユーザーの電子メール アドレスを取得するために、Glass mirror API アプリの承認に使用したのと同じ認証トークンを使用して、この URL を呼び出すために言及したスコープを追加しました:
https://www.googleapis.com/userinfo/email?alt =json

この方法は、最初の認証後にある時点で機能しなくなるようです。そのため、ユーザーが最初にアプリを認証し、メールを保存するときに必ず実行してください。

以前にも AppEngine の UserService からメールを受け取ったばかりですが、たまたま AppEngine で実行している場合は簡単です:
https://developers.google.com/appengine/docs/java/javadoc/com/google/ appengine/api/users/UserService

于 2013-10-06T01:53:00.430 に答える
0

要するに、「Google ミラー サービスに送信しているこのユーザー ID の連絡先情報を取得できないのはなぜですか?」という質問です。

ミラー サービスは、Glassware が追加した連絡先の連絡先情報のみを提供します。Glass の連絡先の詳細と連絡先の追加方法については、https://developers.google.com/glass/contactsを参照してください。このユーザー ID でミラー コンタクトを既に追加していない限り、何も返されません。

Mirror サービスは、userinfo.info または userinfo.email からの情報への直接アクセスを提供しません。それらを Contact for Glass として追加する場合は、最初に OAuth2 ライブラリを使用して取得する必要があります。

于 2013-09-27T19:54:31.557 に答える