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

com.microsoft.bingads.internal.OAuthImplicitGrant Maven / Gradle / Ivy

Go to download

The Bing Ads Java SDK is a library improving developer experience when working with the Bing Ads services by providing high-level access to features such as Bulk API, OAuth Authorization and SOAP API.

There is a newer version: 13.0.23.2
Show newest version
package com.microsoft.bingads.internal;

import com.microsoft.bingads.OAuthTokens;
import java.net.URL;
import java.util.Map;
import com.microsoft.bingads.AuthorizationData;

/**
 * Represents an OAuth authorization object implementing the implicit grant flow for use in a desktop or mobile application.
 *
 * 

* You can use an instance of this class as the {@link AuthorizationData#getAuthentication"} method * of an {@link AuthorizationData} object to authenticate with Bing Ads services. * In this case the AuthenticationToken request header will be set to the corresponding {@link OAuthTokens#getAccessToken} value. *

* *

* This class implements the implicit grant flow for Managing User Authentication with OAuth * documented at http://go.microsoft.com/fwlink/?LinkID=511608. * This is a standard OAuth 2.0 flow and is defined in detail in the Authorization Code Grant section of the OAuth 2.0 spec at * http://tools.ietf.org/html/draft-ietf-oauth-v2-15#section-4.1. * For more information about registering a Bing Ads application, see * http://go.microsoft.com/fwlink/?LinkID=511607. *

*/ public abstract class OAuthImplicitGrant extends OAuthAuthorization { private static final String EXPIRES_IN = "expires_in"; private static final String ACCESS_TOKEN = "access_token"; private static final String TOKEN = "token"; private static final String STATE = "state"; private final String clientId; private final URL redirectionUri; /** * An opaque value used by the client to maintain state between the request and callback * */ private String state; public void setState( String state) { this.state = state; } protected OAuthImplicitGrant(String clientId, URL redirectionUri, OAuthTokens oauthTokens) { this.clientId = clientId; this.redirectionUri = redirectionUri; this.oAuthTokens = oauthTokens; } /** * Gets the Microsoft Account authorization endpoint where the user should be navigated to give his or her consent. * * @return The Microsoft Account authorization endpoint of type {@link URL}. */ @Override public URL getAuthorizationEndpoint() { return LiveComOAuthService.getAuthorizationEndpoint(new OAuthUrlParameters(this.clientId, TOKEN, this.redirectionUri, this.state)); } /** * Extracts the access token from the specified . * * @param redirectionUri the redirect {@link URL} that contains an access token * * @return the {@link OAuthTokens} object */ public OAuthTokens extractAccessTokenFromUrl(URL redirectionUri) { Map fragmentParts; fragmentParts = URLExtensions.parseFragment(redirectionUri); if(!fragmentParts.containsKey(ACCESS_TOKEN)) { throw new UnsupportedOperationException(ErrorMessages.UriDoesntContainAccessToken); } if(!fragmentParts.containsKey(EXPIRES_IN)) { throw new UnsupportedOperationException(ErrorMessages.UriDoesntContainExpiresIn); } this.oAuthTokens = new OAuthTokens( fragmentParts.get(ACCESS_TOKEN), Integer.parseInt(fragmentParts.get(EXPIRES_IN)), null ); return oAuthTokens; } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy