UserServicePluginのupdateメソッドをオーバーライドするソリューションを考え出しました。com.feth.play.module.pa.service.UserServicePluginから派生するクラスを作成し、そのクラスをプラグインとしてplay.pluginsファイルに登録するだけです(play-authenticateを使用しているときにすでに行っている可能性があります)。
次に、オーバーライドされた更新メソッドで、必要に応じてアクセストークンを保存できます。
@Override
public AuthUser update(final AuthUser knownUser)
{
if (knownUser instanceof OAuth2AuthUser)
{
OAuth2AuthUser oAuth2AuthUser = (OAuth2AuthUser) knownUser;
String oauth2accessToken = oAuth2AuthUser.getOAuth2AuthInfo().getAccessToken();
Context.current().session().put("oauth2accessToken", oauth2accessToken);
}
return knownUser;
}
ドキュメントには、これが「ユーザーがログインしたときに呼び出される方法です。ここで、ログインプロバイダーからのデータを使用してプロファイルを更新したり、最終ログイン日を変更したりできます」と記載されています。
実際、(ルートから行うように)Authenticate.authenticateを呼び出すと、PlayAuthenticate.handleAuthentication、PlayAuthenticate.loginAndRedirect、PlayAuthenticate.storeUserが順番に呼び出され、最後に現在のユーザーサービスプラグインが更新されます。