Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I test Cloud Endpoints with Oauth on devserver

My app uses Oauthed Cloud Endpoints and is working fine in production.

My problem is that on the local devserver, my User user is always set to [email protected], even though I've gone through the usual auth, access code, etc etc etc and have a valid authed user.

I get that [email protected] is useful to test oauth endpoints before I have oauth working properly, but since my app is working I'd rather see the actual user there.

To be specific, my endpoint method is

@ApiMethod(name = "insertEmp"), etc
public Emp insertEmp(User user, Emp emp) {
      System.out.println(user.getEmail());  // (A) log "appengine" email
      System.out.println(OAuthServiceFactory.getOAuthService().getCurrentUser().getEmail(); // (B) log authed email

       ...

When deployed, everything is fine, and both (A) and (B) log the authenticated user ([email protected]).

When testing on my local devserver, (A) always logs "[email protected]", even though I have gone through the Oauth sequence and have a valid, authenticated user, and (B) logs [email protected]. So I can do hi-fidelity testing, I need the User to be the real authenticated user.

So in simple terms, how do I get (A) and (B) to be the same?

like image 326
pinoyyid Avatar asked Oct 01 '13 13:10

pinoyyid


2 Answers

It seems it can't be done. I've ended up coding around it by putting the following code at the top of my Endpoint methods.

if ("[email protected]".equalsIgnoreCase(user.getEmail()) {
    user = new User(OAuthServiceFactory.getOAuthService().getCurrentUser().getEmail(),"foo");
}

So now, even on devserver, the User email matches the Oauth email.

like image 198
pinoyyid Avatar answered Oct 29 '22 08:10

pinoyyid


This is not so easy. You'll have to make your settings in the APIs Console. Here you will be able to add "localhost" (http://localhost/) Then you can authenticate, through Google, even though you are running you application on your localhost for development. I have used it extensively, and it works OK Links: https://code.google.com/apis/console/ Just remember the ID's you use here is completely independent of you appengine ID. Took me a few hours to figure that one out.

like image 31
Lars Christoffersen Avatar answered Oct 29 '22 07:10

Lars Christoffersen