حول خيارات التصديق الخاصة بتطبيقات 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);