Android Open Source - O365-Android-Start Authentication






From Project

Back to project page O365-Android-Start.

License

The source code is released under:

MIT License

If you think the Android project O365-Android-Start listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

/*
 *  Copyright (c) Microsoft. All rights reserved. Licensed under the MIT license. See full license at the bottom of this file.
 *///  ww w  . ja va  2s . com

package com.microsoft.office365.starter.helpers;

import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.text.TextUtils;
import android.util.Log;

import com.google.common.util.concurrent.SettableFuture;
import com.microsoft.aad.adal.AuthenticationCallback;
import com.microsoft.aad.adal.AuthenticationContext;
import com.microsoft.aad.adal.AuthenticationResult;
import com.microsoft.aad.adal.PromptBehavior;
import com.microsoft.aad.adal.UserInfo;
import com.microsoft.services.odata.impl.DefaultDependencyResolver;
import com.microsoft.services.odata.interfaces.Credentials;
import com.microsoft.services.odata.interfaces.CredentialsFactory;
import com.microsoft.services.odata.interfaces.Request;

public class Authentication {

  public static AuthenticationContext context = null;
  private static String mLoggedInUser;

  public static SettableFuture<Void> authenticate(
      final Activity rootActivity,
      final DefaultDependencyResolver resolver, String resourceId) {

    final SettableFuture<Void> result = SettableFuture.create();

    getAuthenticationContext(rootActivity).acquireToken(rootActivity,
        resourceId, Constants.CLIENT_ID.trim(),
        Constants.REDIRECT_URI.trim(), PromptBehavior.Auto,
        new AuthenticationCallback<AuthenticationResult>() {

          @Override
          public void onSuccess(
              final AuthenticationResult authenticationResult) {
            if (authenticationResult != null
                && !TextUtils.isEmpty(authenticationResult
                    .getAccessToken())) {
              resolver.setCredentialsFactory(new CredentialsFactory() {
                @Override
                public Credentials getCredentials() {
                  return new Credentials() {
                    @Override
                    public void prepareRequest(
                        Request request) {
                      request.addHeader(
                          "Authorization",
                          "Bearer "
                              + authenticationResult
                                  .getAccessToken());
                    }
                  };
                }
              });
              storeUserId(rootActivity, authenticationResult);
              result.set(null);
            }
          }

          private void storeUserId(final Activity rootActivity,
              final AuthenticationResult authenticationResult) {

            UserInfo ui = authenticationResult.getUserInfo();
            SharedPreferences sharedPref = rootActivity
                .getPreferences(Context.MODE_PRIVATE);

            if (ui != null) {
              mLoggedInUser = ui.getUserId();
              Editor editor = sharedPref.edit();
              editor.putString("UserId", mLoggedInUser);
              editor.putString("DisplayName", ui.getGivenName()
                  + " " + ui.getFamilyName());
              editor.commit();
            } else {
              mLoggedInUser = sharedPref.getString("UserId", "");
            }
          }

          @Override
          public void onError(Exception exc) {
            result.setException(exc);
          }
        });
    return result;
  }

  /**
   * Gets AuthenticationContext for AAD.
   * 
   * @return authenticationContext, if successful
   */
  public static AuthenticationContext getAuthenticationContext(
      Activity activity) {
    try {
      context = new AuthenticationContext(activity,
          Constants.AUTHORITY_URL, false);

    } catch (Throwable t) {
      Log.e("SampleApp", t.toString());
    }
    return context;
  }

  public static void resetToken(Activity activity) {
    getAuthenticationContext(activity).getCache().removeAll();
  }

}

// *********************************************************
//
// O365-Android-Start, https://github.com/OfficeDev/O365-Android-Start
//
// Copyright (c) Microsoft Corporation
// All rights reserved.
//
// MIT License:
// Permission is hereby granted, free of charge, to any person obtaining
// a copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to
// permit persons to whom the Software is furnished to do so, subject to
// the following conditions:
//
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
// *********************************************************





Java Source Code List

com.microsoft.office365.starter.Controller.java
com.microsoft.office365.starter.O365APIsStart_Application.java
com.microsoft.office365.starter.helpers.Authentication.java
com.microsoft.office365.starter.helpers.Constants.java
com.microsoft.office365.starter.helpers.File_UI_State.java
com.microsoft.office365.starter.helpers.ProgressDialogHelper.java
com.microsoft.office365.starter.interfaces.BaseDialogListener.java
com.microsoft.office365.starter.interfaces.MainActivityCoordinator.java
com.microsoft.office365.starter.interfaces.NoticeDialogListener.java
com.microsoft.office365.starter.interfaces.OnEventsAddedListener.java
com.microsoft.office365.starter.interfaces.OnFileChangedEventListener.java
com.microsoft.office365.starter.interfaces.OnOperationCompleteListener.java
com.microsoft.office365.starter.interfaces.OnSignInResultListener.java
com.microsoft.office365.starter.models.AppPreferences.java
com.microsoft.office365.starter.models.O365CalendarModel.java
com.microsoft.office365.starter.models.O365FileListModel.java
com.microsoft.office365.starter.models.O365FileModel.java
com.microsoft.office365.starter.views.CalendarEventDetailActivity.java
com.microsoft.office365.starter.views.CalendarEventDetailFragment.java
com.microsoft.office365.starter.views.CalendarEventFragmentDelete.java
com.microsoft.office365.starter.views.CalendarEventFragmentView.java
com.microsoft.office365.starter.views.CalendarEventListActivity.java
com.microsoft.office365.starter.views.CalendarEventListFragment.java
com.microsoft.office365.starter.views.DeleteDialogFragment.java
com.microsoft.office365.starter.views.FileButtonsFragment.java
com.microsoft.office365.starter.views.FileDetailActivity.java
com.microsoft.office365.starter.views.FileDetailFragment.java
com.microsoft.office365.starter.views.FileListActivity.java
com.microsoft.office365.starter.views.FileListFragment.java
com.microsoft.office365.starter.views.FileUpdateFragment.java
com.microsoft.office365.starter.views.MainActivity.java
com.microsoft.office365.starter.views.MainButtonsFragment.java
com.microsoft.office365.starter.views.MainReadmeFragment.java