Spring Boot (Spring Social) でのログイン連携については、既に親切な方が下記の記事にまとめてくれています。
spring-socialとspringbootでSNSログインを実装する
https://qiita.com/kunikunipon/items/3a9bd6aaa2756456fe38
以下は Google ログイン認証を使おうとしてハマった点のメモです。
OAuth 認証情報の取得とプロパティ設定
- spring.social.google.app-id: Developer Console の「API とサービス」で取得した OAuth クライアント ID
- spring.social.google.app-secret: 上記で取得したクライアントシークレット
なお「承認済みのリダイレクト URI」には「 http://localhost:8080/auth/google 」を設定します。
プロパティは通常 application.yml 等で指定して良いのですが、公開予定のあるものは誤って残すと怖いので、(自分は) STS の実行設定で指定しています。
spring-social-google はコミュニティ版?を使う
Gradle 等の依存関係には com.github.spring-social グループのものを指定する必要があります。
Gradleの場合:
// https://mvnrepository.com/artifact/com.github.spring-social/spring-social-google
compile group: 'com.github.spring-social', name: 'spring-social-google', version: '1.1.3'
// ログイン連携に必要
// https://mvnrepository.com/artifact/org.springframework.social/spring-social-security
compile group: 'org.springframework.social', name: 'spring-social-security' // , version: '1.1.4.RELEASE'
Spring Social 本家の spring-social-google (v.1.0.0.RELEASE) は古く、現在の Spring に対応していません。1
GoogleAutoConfiguration をインポートする
@SpringBootApplication
@Import(GoogleAutoConfiguration.class)
public class SpringSocialSboxApplication {
Spring Boot において spring-social-google は現在外様の扱いらしく、デフォルトでは AutoConfiguration されません。
今回一番のハマりどころ。
[Bug]STS3.9.0 では VM arguments の末尾に「-noverify」が挿入される
本題からはズレますが作業記録として。
STS3.9.0 で「Spring Boot App」として起動した場合、「VM arguments」の末尾にスペースなしで「-noverify」が追記されます。
なので、最後に「-noverify -Ddummy=」等と書いておかないと、プロパティが正しく設定されません。
自分はこれで appSecret にゴミが入り、 Google に弾かれていてしばらく悩みました。今回二番目のハマりどころ。
サンプルコード
-
@EnableGoogle を付けると ClassNotFoundError を吐いて死にます。 ↩