package org.pac4j.oauth.client; import org.pac4j.core.context.WebContext; import org.pac4j.core.redirect.RedirectAction; import org.pac4j.oauth.profile.strava.StravaProfileDefinition; import org.pac4j.oauth.profile.strava.StravaProfile; import org.pac4j.scribe.builder.api.StravaApi20; /** * <p>OAuth20Client for Strava.</p> * <p>Use the key as the client_id and secret as the client_secret, both provided by Strava at: <a href="https://www.strava.com/settings/api">https://www.strava.com/settings/api</a> </p> * <p>Set approvalPrompt to "force" if you want to force the authorization dialog to always display on Strava, otherwise let it to "auto" (default value). </p> * <p>More info at: <a href="http://strava.github.io/api/">http://strava.github.io/api/</a></p> * * @author Adrian Papusoi * @since 1.7.0 */ public class StravaClient extends OAuth20Client<StravaProfile> { /** * comma delimited string of ‘view_private’ and/or ‘write’, leave blank for read-only permissions. */ protected String scope = null; /** * approvalPrompt is by default "auto". <br> * If "force", then the authorization dialog is always displayed by Strava. */ private String approvalPrompt = "auto"; public StravaClient() { } public StravaClient(final String key, final String secret) { setKey(key); setSecret(secret); } @Override protected void clientInit(final WebContext context) { configuration.setApi(new StravaApi20(approvalPrompt)); configuration.setProfileDefinition(new StravaProfileDefinition()); configuration.setScope(this.scope); setConfiguration(configuration); defaultLogoutActionBuilder((ctx, profile, targetUrl) -> RedirectAction.redirect("https://www.strava.com/session")); super.clientInit(context); } public String getApprovalPrompt() { return approvalPrompt; } public void setApprovalPrompt(final String approvalPrompt) { this.approvalPrompt = approvalPrompt; } public String getScope() { return scope; } public void setScope(final String scope) { this.scope = scope; } }