Douglas Correa
Douglas Correa

Reputation: 1015

Google Cloud Endpoints with another oAuth2 provider

Is there a way to use another OAuth2 provider with Google Cloud Endpoints? I mean for example, get authentication from Facebook and use it the same way we use Google Account Auth (using gapi js and putting User class on @ApiMethod)

Upvotes: 19

Views: 3886

Answers (4)

Maxime T
Maxime T

Reputation: 878

Google Cloud Endpoints allow you to recover User, HttpServletRequest and HttpServletContext into you API methods by injecting it as parameters.

It is not OAuth2 but here is a begining of a solution: https://www.yanchware.com/custom-authentication-for-google-cloud-endpoints/

The proposed solution is to inject HttpServletRequest in specific api methods to access the session.

Upvotes: 2

tomrozb
tomrozb

Reputation: 26251

You have to implement your own Authenticator and update @Api configuration. Based on this answer a simple authenticator will look like this:

public class MyAuthenticator implements Authenticator {

    @Override
    public User authenticate(HttpServletRequest request) {
        String token = request.getHeader("Authorization");
        if (token != null) {
            // apply your Facebook/Twitter/OAuth2 authentication
            String user = authenticate(token);
            if (user != null) {
                return new User(user);
            }
        }
        return null;
    }
}

And your API definition

@Api(name = "example", authenticators = {MyAuthenticator.class})

More about custom authenticators you can find in Google documentation.

Upvotes: 7

nate
nate

Reputation: 171

I wrote an example exchanging a Facebook access token for one generated by my application, and validating it from within an endpoints method:

https://github.com/loudnate/appengine-endpoints-auth-example

Upvotes: 2

Tom
Tom

Reputation: 17854

No. I came across someone else asking this question and the answer from the google folks (if I remember correctly) was that the endpoints user authentication currently only supports Google accounts.

Upvotes: 5

Related Questions