حول خيارات التصديق الخاصة بتطبيقات Oracle Mobile Hub

يستطيع المستخدمون التصديق مع تطبيق Oracle Mobile Hub باستخدام عدد من التقنيات، بما في ذلك OAuth والدخول الموحد وتصديق HTTP الأساسي وتسجيل الدخول إلى Facebook.

حول مستهلك OAuth

يمكن للمستخدمين التصديق باستخدام تطبيقات Oracle Mobile Hub Android باستخدام تطبيق OAuth Consumer.

عليك أولاً تهيئة وكيل الاعتماد وتعيين نوع التصديق على OAUTH:

private AuthorizationAgent mAuthorization; 
private MobileBackend mobileBackend; 

try {
  mobileBackend = MobileManager.getManager().getMobileBackend(this);
} catch (ServiceProxyException e) {
      e.printStackTrace();
}

mAuthorization = mobileBackend.getAuthorization(AuthType.OAUTH);

ثم تستخدم أسلوب authenticate لمحاولة إجراء التصديق. يتضمن الاستدعاء معلمات لسياق Android واسم المستخدم وكلمة السر والاستدعاء الذي يقوم بإكمال عملية الاعتماد:

TextView username, password; 
username = (TextView) findViewById(R.id.username);
password = (TextView) findViewById(R.id.password); 
String userName = username.getText().toString(); 
String passWord = password.getText().toString();
mAuthorization.authenticate(mCtx, userName, passWord, mLoginCallback); 

خاص بتعريف الاستدعاء:

AuthorizationCallback mLoginCallback = new AuthorizationCallback() {
   @Override
   public void onCompletion(ServiceProxyException exception) {
     Log.d(TAG, "OnCompletion Auth Callback");
      if (exception != null) {
        Log.e(TAG, "Exception while receiving the Access Token", exception);
     } else {
        Log.e(TAG, "Authorization successful");
     }
   }
 }

حول تصديق الدخول الموحد باستخدام مقطع خارجي

يمكنك التصديق على تطبيق الأجهزة المتنقلة باستخدام مقطع تم إصداره بواسطة موفر طرف آخر.

أولاً ، يلزم أن يحصل التطبيق على مقطع من جهة إصدار مقطع الطرف الثالث. تختلف طريقة الحصول على المقطع حسب جهة الإصدار.

بمجرد أن يكون لديك المقطع ، قم بتهيئة وكيل الاعتماد واستخدم المقطع في استدعاء الاعتماد.

private AuthorizationAgent mAuthorization; 
private MobileBackend mobileBackend; 
Context mCtx = getApplicationContext();

try {
  mobileBackend = MobileManager.getManager().getMobileBackend(this);
} catch (ServiceProxyException e) {
      e.printStackTrace();
}

mAuthorization = mobileBackend.getAuthorization(AuthType.TOKENEXCHANGE);

ثم تستخدم أسلوب authenticateUsingTokenExchange لمحاولة إجراء التصديق.

mAuthorization.authenticateUsingTokenExchange(mCtx, token, false, mLoginCallback);

فيما يلي الاستدعاء:

AuthorizationCallback mLoginCallback = new AuthorizationCallback() {
    @Override
    public void onCompletion(ServiceProxyException exception) {
        if (exception == null) {
            //redirect to another Activity after login
            Intent intent = new Intent(mCtx, ContentActivity.class);
            startActivity(intent);
  
        } else {
            Log.e(TAG, "Exception during token exchange:", exception);
            finish();
        }
    }
};

ملاحظة:

وقت انتهاء الصلاحية الافتراضي لتخزين مقطع طرف ثالث في Oracle Mobile Hub هو 6 ساعات. يمكنك تعديل هذا الوقت بتغيير النظام Security_TokenExchangeTimeoutSecs.

كما يمكنك إنشاء تعليمات برمجية للتطبيق للاحتفاظ بالمستخدم الذي قام بالدخول ، حتى عند إغلاق التطبيق وإعادة تشغيله.

في المثال أعلاه ، يتم استدعاء الأسلوب authenticateUsingTokenExchange() مع تعيين المعلمة الثالثة (storeToken) إلى false. إذا قمت بتعيين هذه المعلمة على true وكان تبادل المقاطع ناجحًا ، فسيتم تخزين مقطع MCS في مخزن آمن ويظل المستخدم في حالة تسجيل الدخول حتى تنتهي صلاحية المقطع.

يمكنك عندئذٍ استخدام الأسلوب loadSSOTokenExchange في الكائن Authorization لتحميل المقطع المخزن. في حالة عدم إمكانية استرجاع مقطع من المخزن الآمن ، فإن الأسلوب يُرجع false.

فيما يلي بعض التعليمات البرمجية التي تحاول تحميل مقطع محفوظ ، وإذا فشلت في إعادة تشغيل عملية التصديق:

try {
    mAuthorization = MobileManager.getManager().getMobileBackend(this).getAuthorization();
    if (!mAuthorization.loadSSOTokenExchange(mCtx)) {
        //user not logged in, so need to initiate login
        mAuthorization.authenticateUsingTokenExchange(mCtx, token, true, mLoginCallback);
    }

عندما يكون لديك المقطع المخزن في المخزن الآمن ، يبقى مقترنًا بالخلفية المتحركة بأن التطبيق مستخدم في الأصل. وبالتالي ، إذا تم تحديث التطبيق لاستخدام نهاية خلفية محمولة مختلفة (أو إصدار خلفية متحركة )، فستحتاج إلى مسح المقطع المحفوظ وإعادة التصديق.

mAuthorization.clearSSOTokenExchange(mCtx);
mAuthorization.authenticateUsingTokenExchange(mCtx, token, true, mLoginCallback);

حول تصديق HTTP الأساسي

يكون التصديق على المستخدمين باستخدام HTTP Basic مشابهًا للتصديق باستخدام OAuth.

عليك أولاً تهيئة وكيل الاعتماد وتعيين نوع التصديق على BASIC_AUTH:

private AuthorizationAgent mAuthorization; 
private MobileBackend mobileBackend; 

try {
  mobileBackend = MobileManager.getManager().getMobileBackend(this);
} catch (ServiceProxyException e) {
      e.printStackTrace();
}

mAuthorization = mobileBackend.getAuthorization(AuthType.BASIC_AUTH)

ثم تستخدم أسلوب authenticate لمحاولة إجراء التصديق. يتضمن الاستدعاء معلمات لسياق Android واسم المستخدم وكلمة السر والاستدعاء الذي يقوم بإكمال عملية الاعتماد.

TextView username, password; 
username = (TextView) findViewById(R.id.username);
password = (TextView) findViewById(R.id.password);
String userName = username.getText().toString(); 
String passWord = password.getText().toString();
mAuthorization.authenticate(mCtx, userName, passWord, mLoginCallback); 

خاص بتعريف الاستدعاء:

AuthorizationCallback mLoginCallback = new AuthorizationCallback() {
   @Override
   public void onCompletion(ServiceProxyException exception) {
     Log.d(TAG, "OnCompletion Auth Callback");
     if (exception != null) {
       Log.e(TAG, "Exception while receiving the Access Token", exception);
     } else {
   Log.e(TAG, "Authorization successful");
   }
  }
 }

حول استخدام الدخول إلى Facebook

إذا أردت استخدام دخول Facebook، فيمكنك استخدام الكلاسات الموجودة في مكتبة oracle_mobile_android_social.

عليك أولاً تهيئة وكيل الاعتماد وتعيين نوع التصديق على Facebook:

SocialAuthorizationAgent mAuthorization;
SocialMobileBackend socialMobileBackend;
try {
  socialMobileBackend = SocialMobileBackendManager.getManager().getMobileBackend(mCtx);
} catch(ServiceProxyException e){
    e.printStackTrace();
}
mAuthorization = socialMobileBackend.getSocialAuthorization(); mAuthorization.setAuthType(AuthType.FACEBOOK);


استخدام كائن CallbackManager من SDK لـ Facebook، لبدء التصديق.

private CallbackManager callbackManager;
mAuthorization.setup(getApplicationContext(), callback);
callbackManager = mAuthorization.getCallBackManager();
mAuthorization.authenticateSocial(mCtx);

وهنا يمكن استخدام التعليمة البرمجية callback التي يتم تمريرها أعلاه:

private FacebookCallback<LoginResult> callback = new FacebookCallback<LoginResult>() {
    @Override
    public void onSuccess(LoginResult loginResult) {
        Log.e(TAG, "facebook login successful.");
    }
    @Override
    public void onCancel() {
    }
    @Override
    public void onError(FacebookException e) {
    }
};

قم بتجاوز أسلوب onActivityResult() لاستخدام الاستدعاء:

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    callbackManager.onActivityResult(requestCode, resultCode, data);