1

私は spring-social-google (git リポジトリから構築) を使用して、Spring MVC アプリケーションにサインインできるようにしています (Facebook、Twitter、linedin は既に動作しています)。以下のフォームで認証できますが、メール アドレスが返されず、Google+ タイムラインへの投稿が禁止されています。

<form action="<c:url value="/register/social/${providerId}" />" method="POST" id ="${providerId}Form" name = "${providerId}Form">
    <button type="submit"><img src="<c:url value='/resources/${providerId}/sign-in-with-${providerId}.png'/>" border="0"/></button>
    <input type="hidden" name="scope" value="https://www.googleapis.com/auth/plus.profile.emails.read" />                   
</form>

問題は、正しいスコープ変数がないことだと思います。https://developers.google.com/+/api/oauthでいくつかの組み合わせを試しましたが、スコープ変数がすべて間違っていると言われました。どちらが必要ですか?

これは、メールアドレスを取得するために使用しているコードです。

public final class LoginConnectionSignUp implements ConnectionSignUp 
{   
    public String execute(Connection<?> connection) 
    {
        final UserProfile up = connection.fetchUserProfile();
        final String email = up.getEmail();
        // ...
    }

}
4

1 に答える 1

2

ここにはいくつかの問題があります。

現時点では、Google+ ストリームへの投稿は Google の API でサポートされていません。このパッケージでは、ユーザーのプロファイルに保存される「アプリ アクティビティの瞬間」を作成できるように見えますが、これらはストリームへの投稿ではありません。https://www.googleapis.com/auth/plus.loginアプリ アクティビティを生成するには、スコープを含める必要があります。

さらに、emailスコープまたはスコープのいずれかを含めることができますhttps://www.googleapis.com/auth/plus.profile.emails.read。これらのスコープを使用すると、への呼び出しの一部として電子メール アドレスを取得できるはずです。

Person person = google.plusOperations().getPerson("me");

したがって、入力タグはおそらく次のようになります

<input type="hidden" name="scope" value="https://www.googleapis.com/auth/plus.login https://www.googleapis.com/auth/plus.profile.emails.read" />                   

(使用する 2 つのスコープ間のスペースに注意してください)。

重要な注意:ドキュメントでは、次のような呼び出しを介して電子メールを取得することについて説明しています

GoogleUserInfo userInfo = google.userOperations().getUserInfo();

これは今のところ機能する可能性がありますが、非推奨であり、9 月に削除される予定です。userinfo スコープも、現時点で非推奨に設定されています。このメソッドまたはこれらのスコープを使用しないでください。(そして、作者に連絡して、非推奨にするよう伝えてください。)

于 2014-05-20T18:54:03.697 に答える