All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.pac4j.oauth.client.TwitterClient Maven / Gradle / Ivy

There is a newer version: 6.1.0
Show newest version
package org.pac4j.oauth.client;

import com.fasterxml.jackson.databind.JsonNode;
import com.github.scribejava.apis.TwitterApi;
import com.github.scribejava.core.builder.api.BaseApi;
import com.github.scribejava.core.builder.api.DefaultApi10a;
import com.github.scribejava.core.model.OAuth1Token;
import com.github.scribejava.core.oauth.OAuth10aService;
import org.pac4j.core.context.WebContext;
import org.pac4j.core.exception.HttpAction;
import org.pac4j.core.util.CommonHelper;
import org.pac4j.oauth.profile.JsonHelper;
import org.pac4j.oauth.profile.twitter.TwitterProfile;

/**
 * 

This class is the OAuth client to authenticate users in Twitter.

*

You can define if a screen should always been displayed for authorization confirmation by using the * {@link #setAlwaysConfirmAuthorization(boolean)} method (false by default).

*

It returns a {@link org.pac4j.oauth.profile.twitter.TwitterProfile}.

*

More information at https://dev.twitter.com/docs/api/1/get/account/verify_credentials

* * @author Jerome Leleu * @since 1.0.0 */ public class TwitterClient extends BaseOAuth10Client { private boolean alwaysConfirmAuthorization = false; public TwitterClient() { } public TwitterClient(final String key, final String secret) { setKey(key); setSecret(secret); } @Override protected void internalInit(final WebContext context) { super.internalInit(context); this.service = new OAuth10aService((DefaultApi10a) getApi(), buildOAuthConfig(context)); } @Override protected BaseApi getApi() { final DefaultApi10a api; if (this.alwaysConfirmAuthorization == false) { api = TwitterApi.Authenticate.instance(); } else { api = TwitterApi.instance(); } return api; } @Override protected String getProfileUrl(final OAuth1Token accessToken) { return "https://api.twitter.com/1.1/account/verify_credentials.json"; } @Override protected boolean hasBeenCancelled(final WebContext context) { final String denied = context.getRequestParameter("denied"); if (CommonHelper.isNotBlank(denied)) { return true; } else { return false; } } @Override protected TwitterProfile extractUserProfile(final String body) throws HttpAction { final TwitterProfile profile = new TwitterProfile(); final JsonNode json = JsonHelper.getFirstNode(body); if (json != null) { profile.setId(JsonHelper.getElement(json, "id")); for (final String attribute : profile.getAttributesDefinition().getPrimaryAttributes()) { profile.addAttribute(attribute, JsonHelper.getElement(json, attribute)); } } return profile; } public boolean isAlwaysConfirmAuthorization() { return this.alwaysConfirmAuthorization; } public void setAlwaysConfirmAuthorization(final boolean alwaysConfirmAuthorization) { this.alwaysConfirmAuthorization = alwaysConfirmAuthorization; } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy