Created
December 29, 2012 19:42
-
-
Save arttuladhar/4408913 to your computer and use it in GitHub Desktop.
SignOn features using Google Web Services is easy and efficient way to authenticate users. It's pretty common these days to have authentication via Google UserServices. Google App Engine provides UserServiceFactory api for this purpose. I tried implementing this API within Google Web Toolkit and here's the code snippet for reference. The code is…
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| package com.aayush.hangman.client; | |
| import com.google.gwt.core.client.EntryPoint; | |
| import com.google.gwt.core.client.GWT; | |
| import com.google.gwt.event.dom.client.ClickEvent; | |
| import com.google.gwt.event.dom.client.ClickHandler; | |
| import com.google.gwt.http.client.Request; | |
| import com.google.gwt.http.client.RequestBuilder; | |
| import com.google.gwt.http.client.RequestCallback; | |
| import com.google.gwt.http.client.RequestException; | |
| import com.google.gwt.http.client.Response; | |
| import com.google.gwt.user.client.Random; | |
| import com.google.gwt.user.client.Window; | |
| import com.google.gwt.user.client.rpc.AsyncCallback; | |
| import com.google.gwt.user.client.ui.Button; | |
| import com.google.gwt.user.client.ui.FlowPanel; | |
| import com.google.gwt.user.client.ui.HTML; | |
| import com.google.gwt.user.client.ui.Image; | |
| import com.google.gwt.user.client.ui.Label; | |
| import com.google.gwt.user.client.ui.RootPanel; | |
| public class HangMan implements EntryPoint { | |
| final LoginServicesAsync logininfo = GWT.create(LoginServices.class); | |
| public void onModuleLoad() { | |
| // Create Interface | |
| RootPanel hangman_login = RootPanel.get("signon"); | |
| createloginScreen(hangman_login); | |
| } | |
| private void createloginScreen(final RootPanel hangman_login) { | |
| logininfo.isLoggenIn(new AsyncCallback<Boolean>() { | |
| @Override | |
| public void onFailure(Throwable caught) { | |
| Window.alert("Error : Sorry Cannot Connect to Google Services"); | |
| hangman_login.add(new Label("Cannot Connect to Google Services")); | |
| } | |
| @Override | |
| public void onSuccess(Boolean result) { | |
| if (result) { | |
| getEmail(); | |
| } else { | |
| getsigninurl(); | |
| } | |
| } | |
| private void getsigninurl() { | |
| logininfo.createLoginURL(GWT.getHostPageBaseURL(),new AsyncCallback<String>() { | |
| @Override | |
| public void onSuccess(String result) { | |
| Window.alert(result); | |
| String login_url = "<a href=\" " + result + "\">SignIn</a>"; | |
| hangman_login.add(new HTML(login_url)); | |
| } | |
| @Override | |
| public void onFailure(Throwable caught) { | |
| hangman_login.add(new Label("Cannot Connect to Google Services")); | |
| } | |
| }); | |
| } | |
| private void getEmail() { | |
| logininfo.getEmail(new AsyncCallback<String>() { | |
| @Override | |
| public void onSuccess(String result) { | |
| String userwelcome = "<h4>Welcome, " + result + "</h4>"; | |
| hangman_login.add(new HTML(userwelcome)); | |
| // Get SignOut URL | |
| logininfo.createLogoutURL(GWT.getHostPageBaseURL(), | |
| new AsyncCallback<String>() { | |
| @Override | |
| public void onSuccess(String result) { | |
| String logout = "<a href=\"" + result+ "\">LogOff</a><br><br>"; | |
| hangman_login.add(new HTML(logout)); | |
| } | |
| @Override | |
| public void onFailure(Throwable caught) { | |
| hangman_login.add(new Label("Cannot Connect to Google Services")); | |
| } | |
| }); | |
| } | |
| @Override | |
| public void onFailure(Throwable caught) { | |
| Window.alert("Cannot Perform RPC Call"); | |
| hangman_login.add(new Label("Cannot Connect to Google Services")); | |
| } | |
| }); | |
| } | |
| }); | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| package com.aayush.hangman.client; | |
| import com.google.gwt.user.client.rpc.RemoteService; | |
| import com.google.gwt.user.client.rpc.RemoteServiceRelativePath; | |
| @RemoteServiceRelativePath("loginservices") | |
| public interface LoginServices extends RemoteService{ | |
| String createLoginURL( String callbackURL ); | |
| String createLogoutURL ( String callbackURL ); | |
| String getEmail(); | |
| boolean isLoggenIn(); | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| package com.aayush.hangman.client; | |
| import com.google.gwt.user.client.rpc.AsyncCallback; | |
| public interface LoginServicesAsync { | |
| void createLoginURL(String callbackURL, AsyncCallback<String> callback); | |
| void createLogoutURL(String callbackURL, AsyncCallback<String> callback); | |
| void getEmail(AsyncCallback<String> callback); | |
| void isLoggenIn(AsyncCallback<Boolean> callback); | |
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| package com.aayush.hangman.server; | |
| import com.aayush.hangman.client.LoginServices; | |
| import com.google.appengine.api.users.UserService; | |
| import com.google.appengine.api.users.UserServiceFactory; | |
| import com.google.gwt.user.server.rpc.RemoteServiceServlet; | |
| @SuppressWarnings("serial") | |
| public class LoginServicesImpl extends RemoteServiceServlet implements LoginServices{ | |
| final static public UserService userService = UserServiceFactory.getUserService(); | |
| @Override | |
| public String createLoginURL(String callbackURL) { | |
| return userService.createLoginURL(callbackURL); | |
| } | |
| @Override | |
| public String createLogoutURL(String callbackURL) { | |
| return userService.createLogoutURL(callbackURL); | |
| } | |
| @Override | |
| public String getEmail() { | |
| return userService.getCurrentUser().getEmail(); | |
| } | |
| @Override | |
| public boolean isLoggenIn() { | |
| return userService.isUserLoggedIn(); | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment