Skip to content

Example of authenticated clients with TechStacks application.

Notifications You must be signed in to change notification settings

ServiceStackApps/TechStacksAuth

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

5 Commits

Repository files navigation

TechStacksAuth

This project shows client examples of connecting and authenticating with the TechStacks application using various technologies.

Using Xamarin.Auth with ServiceStack

Xamarin.Auth is a Xamarin component that makes integrating your Xamarin Android or iOS application simple when connecting to OAuth and various other providers. Connecting to your ServiceStack server with existing OAuth support such as Twitter, GitHub and Facebook via Xamarin.Auth is also easy!

Xamarin.Auth is extensible and already provides a good base for handling our authentication with ServiceStack. In this example we create a custom WebAuthenticator called ServiceStackAuthenticator. This custom authenticator allows us to call our ServiceStack instance directly and reuse existing OAuth integration, eg TwitterAuthProvider.

Xamarin's authentication library requires the creation of an Account object that represents the authenticated users details, user name, email etc. These details will vary can be constructed from your own ServiceStack service.

Once the authentication process has been completed and the users details collected from your ServiceStack server, simple check IsAuthenticated to verify if the process was successful.

button.Click+=delegate{varauth=newServiceStackAuthenticator("http://techstacks.io","twitter",(jsonServiceClient)=>{//Custom user details service.varuserSessionInfo=jsonServiceClient.Get<UserSessionInfo>("/my-session");returnnewAccount(userSessionInfo.UserName,jsonServiceClient.CookieContainer);});//Start authentication activity.StartActivity(auth.GetUI(this));//Wire completed event.auth.Completed+=(sender,eventArgs)=>{if(eventArgs.IsAuthenticated){GetUserFeedResponseresponse=null;//Grab auth cookies for app JsonServiceClientclient.CookieContainer=eventArgs.Account.Cookies;//Get user feed for next activity.response=client.Get(newGetUserFeed());varintent=newIntent(this,typeof(UserFeed));intent.PutStringArrayListExtra("techstackfeed",response.Results.Select(x =>x.Name).ToList());//Start user feed activityStartActivity(intent);}};};

The above example first constructs the authenticator passing is:

  • baseUrl Base URL of the ServiceStack server, eg http://techstacks.io
  • provider The authentication provider you want to use, in this case, twitter
  • getUserDetails Func that given a ServiceClientBase returns a valid Account object.

For more control, two optional functions can be provided.

  • successUriPredicate A predicate to overriding the successful URI check
  • serviceClientFactory for providing your own instance of a ServiceClientBase. Authentication cookies will be populated on successful authentication.

Once the Completed event has been fired, authentication cookies can be accessed via the eventArgs.Account.Cookies property. These can then be passed to your own instance of the ServiceClientBase (eg JsonServiceClient) to make subsequent authenticated calls.

About

Example of authenticated clients with TechStacks application.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages