Weibo.java
نسخة الكود كما يلي:
@تجاوز
oncreate void المحمي (حزمة SaveInstancestate) {
super.oncreate (SaveInstancestate) ؛
setContentView (r.layout.user_center) ؛
// إنشاء مثيل Weibo
Mweiboauth = Weiboauth الجديد (هذا ، Constants.App_Key ،
Constants.redirect_url ، Constants.Scope) ؛
// إنشاء مثال واجهة مشاركة Weibo
mweiboshareapi = weibosharesdk.createweiboapi (هذا ، constants.app_key) ؛
// عندما يتم إعادة تعزيز النشاط (النشاط في الخلفية ، قد يتم قتله بسبب عدم كفاية الذاكرة) ،
// تحتاج إلى استدعاء {link iweiboshareapi#handleweboresponse} لتلقي البيانات التي تم إرجاعها بواسطة عميل Weibo.
// التنفيذ ناجح ، وإرجاع صحيح ، واتصل {link iweiboHandler.Response#onResponse} ؛
// الفشل في العودة كاذبة ، لا يسمى رد الاتصال أعلاه
if (SaveInstancestate! = null) {
mweiboshareapi.handleweiboresponse (getIntent () ، هذا) ؛
}
}
/**
* تحقق مما إذا كان المستخدم قد قام بتثبيت Sina Weibo
*/
الفراغ العام isnotinstall () {
يحاول {
// تحقق مما إذا كانت بيئة عميل Weibo طبيعية.
if (mweiboshareapi.checkenvironment (true)) {
// قم بتسجيل تطبيق تابع لجهة خارجية إلى عميل Weibo.
// ومع ذلك ، فإن أذونات التكامل والمشاركة في عمود المرفق تتطلب تطبيق التعاون.
mweiboshareapi.registerapp () ؛
يبدأ intinashare () ؛
}
} catch (weiboshareexception e) {
E.PrintStackTrace () ؛
Toast.Maketext (UserCenter.This ، E.GetMessage () ، toast.length_long)
.يعرض()؛
}
if (Dialog! = null) {
Dialog.Dismiss () ؛
}
}
/**
* Weibo مصادقة وترخيص فئة رد الاتصال. 1. عند تفويض SSO ، تحتاج إلى تسميتها في {link #OnactivityResult}
* {link ssoHandler#fatherizeCallback} ، سيتم تنفيذ رد الاتصال. 2
* عند منح التفويض ، سيتم تنفيذ رد الاتصال بعد الانتهاء من التفويض. عندما يكون التفويض ناجحًا ، يرجى حفظ Access_Token ، و Expires_in ، و UID وغيرها من المعلومات
* المشاركين في.
*/
Class AuthListener تنفذ WeiboauthListener {
@تجاوز
public void onComplete (قيم الحزمة) {
// تحليل الرمز المميز من الحزمة
MacCessToken = Oauth2AccessToken.ParseaccessToken (القيم) ؛
if (maccesstoken.issessionvalid ()) {
// حفظ الرمز المميز إلى المشاركين
AccessTokenKeeper.WriteAccessToken (UserCenter.This ،
maccesstoken) ؛
sendMessage () ؛
}
}
@تجاوز
public void oncancel () {
}
@تجاوز
public void onweiboexception (WeiboException e) {
Toast.Maketext (Usercenter.This ،
"Auth استثناء:" + E.GetMessage () ، Toast.length_long)
.يعرض()؛
}
}
/**
* ترخيص مستخدم سينا ويبو
*/
void public startInashare () {
mssoHandler = new ssoHandler (UserCenter.This ، mweiboauth) ؛
// اقرأ معلومات مثل AccessToken التي تم حفظها في المرة الأخيرة من المشاركين.
MacCessToken = AccessTokenKeeper.ReadAccessToken (هذا) ؛
// إذا كان الرمز مميزًا ، اتصل وأرسل Weibo مباشرة
if (maccesstoken.issessionvalid ()) {
sendMessage () ؛
} آخر {
mssoHandler.Authorize (new AuthListener ()) ؛
}
}
/**
* see {link Activity#OnNewintent}
*/
@تجاوز
باطل محمي onnewintent (نية نية) {
super.onnewintent (نية) ؛
// بعد الاتصال بـ Weibo من التطبيق الحالي ومشاركته ، عند العودة إلى التطبيق الحالي ، تحتاج إلى استدعاء هذه الوظيفة هنا
// لتلقي البيانات التي يتم إرجاعها من قبل عميل Weibo ؛
// {link iweibohandler.response#onResponse} ؛
mweiboshareapi.handleweiboresponse (نية ، هذا) ؛
}
/**
* عندما يخرج نشاط ترخيص SSO ، يتم استدعاء الوظيفة.
*
* see {link Activity#onActivityResult}
*/
@تجاوز
void onActivityResult المحمي (int requestcode ، int resultcode ، data data) {
Super.OnactivityResult (requestCode ، ResultCode ، Data) ؛
// SSO Cuplization Callback
// مهم: يجب إعادة كتابة النشاط الذي يبدأ تسجيل الدخول SSO
if (mssoHandler! = null) {
mssoHandler.AuthorizeCallback (requestCode ، ResultCode ، Data) ؛
}
}
/**
* تلقي البيانات المطلوبة بواسطة Micro-Client. عندما يقوم عميل Weibo باستدعاء التطبيق الحالي ويشاركه ، يتم استدعاء الطريقة.
*
* Param BaseRequest
* كائن بيانات طلب Weibo
* see { @link iweiboshareapi#gealweiborequest}
*/
@تجاوز
public void onresponse (baseresponse baseresp) {
التبديل (baseresp.errcode) {
Case wbconstants.errorcode.err_ok:
if (publicfun.sharecondition ()) {
GainBobi () ؛
} آخر {
Toast.Maketext (هذا ، R.String.share_success ، Toast.Length_Long)
.يعرض()؛
}
استراحة؛
Case wbconstants.errorcode.err_cancel:
استراحة؛
Case wbconstants.errorcode.err_fail:
Toast.Maketext (هذا ، R.String.errcode_deny ، Toast.Length_Long)
.يعرض()؛
استراحة؛
}
if (Dialog! = null) {
Dialog.Dismiss () ؛
}
}
/**
* يرسل طلب الطرف الثالث رسالة طلب إلى Weibo واتصل واجهة مشاركة Weibo.
* see {link #sendmultimessage} أو {link #sendsinglemessage}
*/
private void sendmessage () {
if (mweiboshareapi.isweiboappsupportapi ()) {
sendMultimessage () ؛
} آخر {
Toast.Maketext (هذا ، r.string.sina_share_hint ، toast.length_short)
.يعرض()؛
}
}
/**
* يرسل طلب الطرف الثالث رسالة طلب إلى Weibo واتصل واجهة مشاركة Weibo. ملاحظة: متى
* {link iweiboshareapi#getWeiBoAppSupportapi ()}> = 10351 ، فإنه يدعم مشاركة رسائل متعددة في نفس الوقت.
*
* param hastext
* هل هناك أي نص للمحتوى المشترك
* param hasimage
* هل هناك أي صور محتوى مشترك
* param haswebpage
* هل هناك صفحة ويب للمحتوى المشترك؟
*/
private void sendmultimessage () {
// 1. تهيئة رسالة المشاركة على Weibo
weibomultimessage weibomessage = new weibomultimessage () ؛
weibomessage.textObject = getTextObj () ؛
يمكن للمستخدمين مشاركة موارد الوسائط الأخرى (واحدة من صفحات الويب والموسيقى ومقاطع الفيديو والأصوات)
weibomessage.mediaObject = getWebPageObj () ؛
// 2. تهيئة طلبات الرسائل من أطراف ثالثة إلى Weibo
طلب SendMultimessageToweIboreQuest = جديد sendMultimessageToweiboreQuest () ؛
// استخدم المعاملة لتحديد الطلب بشكل فريد
request.transaction = string.valueof (System.CurrentTimeMillis ()) ؛
request.multimessage = weibomessage ؛
// 3. أرسل رسالة طلب إلى Weibo واستدعاء واجهة مشاركة Weibo
mweiboshareapi.sendrequest (طلب) ؛
// سجل مشاركة السجل
publicfun.sendshareapplog (usercenter.This ،
getResources (). getString (R.String.micro_blog)) ؛
if (Dialog! = null) {
Dialog.Dismiss () ؛
}
}
/**
* إنشاء كائن رسالة نصية.
* @كائن رسالة نصية.
*/
TextObject الخاص getTextObj () {
textObject TextObject = new TextObject () ؛
textObject.text = getResources (). getString (r.string.share_content) ؛
إرجاع TextObject ؛
}
/**
* إنشاء كائن رسالة الوسائط المتعددة (صفحة الويب).
* @REGURN Multimedia (صفحة الويب) كائن رسالة.
*/
PRICIST PEPAGEOBJECT GETWEBPAGEOBJ () {
WebPageObject MediaObject = new WebPageObject () ؛
MediaObject.Actionurl = getString (r.string.share_url) ؛
MediaObject.Identify = utility.generateguid () ؛
MediaObject.title = getResources (). getString (r.string.share_title) ؛
MediaObject.description = getString (r.string.share_content) ؛
BITMAP BMP = bitmapfactory.decoderesource (getResources () ،
R.Drawable.Icon) ؛
MediaObject.SetThumbimage (BMP) ؛
إرجاع MediaBject ؛
}
/**
* يحدد هذه الفئة المعلمات المطلوبة لترخيص Weibo.
* مؤلف سينا
* since 2013-10-07
*/
الطبقة العامة AccessTokenkeeper {
Private Static Final String Temperences_Name = "com_weibo_sdk_android" ؛
Static Final String key_uid = "uid" ؛
key_access_token = "access_token" ؛
key_expires_in = "expires_in" ؛
/**
* احفظ كائن الرمز المميز إلى المشاركين.
*
* @Param Context Application سياق
* كائن رمز الرمز المميز param
*/
static static void writeaccesstoken (سياق السياق ، Oauth2AccessToken Token) {
if (null == context || null == token) {
يعود؛
}
sharepreferences pref = context.getSharedPreferences (تفضيلات_name ، context.mode_append) ؛
محرر المحرر = pref.edit () ؛
editor.putString (key_uid ، token.getuid ()) ؛
editor.putString (key_access_token ، token.getToken ()) ؛
editor.putlong (key_expires_in ، token.getExpirestime ()) ؛
editor.Commit () ؛
}
/**
* اقرأ معلومات الرمز المميز من المشاركين.
*
* @Param Context Application سياق
*
* العودة إلى كائن الرمز المميز
*/
static Oauth2AccessToken readaccesstoken (سياق السياق) {
if (null == context) {
العودة لاغية.
}
Oauth2AccessToken Token = new Oauth2AccessToken () ؛
sharepreferences pref = context.getSharedPreferences (تفضيلات_name ، context.mode_append) ؛
token.setuid (pref.getString (key_uid ، "")) ؛
token.settoken (pref.getString (key_access_token ، "")) ؛
token.setExpirestime (pref.getLong (key_expires_in ، 0)) ؛
الرمز الرمز المميز.
}
/**
* امسح المعلومات الرمزية في المشاركين.
*
* @Param Context Application سياق
*/
الفراغ الثابت العام واضح (سياق السياق) {
if (null == context) {
يعود؛
}
sharepreferences pref = context.getSharedPreferences (تفضيلات_name ، context.mode_append) ؛
محرر المحرر = pref.edit () ؛
editor.clear () ؛
editor.Commit () ؛
}
}
ما سبق هو كل شيء عن هذا المقال ، وآمل أن يكون من المفيد للجميع إتقان جافا.