لدي اليوم دراسة عن واجهة برمجة تطبيقات سينا ويبو ، والآن أدركت وظيفة نشر Weibo ، بما في ذلك Weibo مع الصور. بالنسبة للأمان ، لا توفر واجهة برمجة تطبيقات Sina Weibo وظيفة تسجيل الدخول بكلمة مرور حساب Weibo ، ولكنها تستخدم تفويض OAUTH. يقوم المستخدمون بالوصول إلى مواقع SINA من خلال المتصفحات لتسجيل الدخول. بعد تسجيل الدخول بنجاح ، يقوم المتصفح بإرجاع المفتاح وسرية البرنامج.
main.xml:
<؟ Android: layout_width = "fill_parent" Android: layout_height = "wall_content" Android: id = "@id /login" Android: text = "login" /> <edittex android: id = "@+id /status <button Android: layout_width = "fill_parent" Android: layout_height = "wall_content" Android: id = "@id/send" Android: text = "publish"/> </linearlayout>
زر تسجيل الدخول ، مربع إدخال ، وزر نشر لأنه يريد تلقي البيانات التي يتم إرجاعها بواسطة المتصفح ، تحتاج إلى إضافة مرشح نية عند تسجيل نشاط على AndroidManifest.xml.
<؟ Android: icon = "@drawable/icon" Android: label = "@string/app_name"> <Steent-Filter> <الإجراءات Android: name = "Android.intent.action.main"/> <category android: name = "android.inroid.category.launcher"/>/intent-filter> /> <الفئة Android: name = "android.intent.category.default"/> <category android: name = "Android.intent.category.browable"/> <data android: "sina" android: </"weibo"/> <! Android: name = "Android.permission.internet"> </use-permission> </mansest>
يجب كتابة المرشح القصد في فقرتين. إذا كتبت معا ، فلن يتم البدء.
من أجل البساطة ، فقط انسخ فئة OauthConstant في Sina Sample:
حزمة weibo4android.androidexamples ؛ استيراد weibo4android.weibo ؛ استيراد weibo4android.http.accesstoken ؛ استيراد weibo4android.http.requesttoken ؛ الطبقة العامة oauthconstant {private static weibo weibo = null ؛ مثيل adauthconstant ثابت الخاص = فارغ ؛ requesttoken requesttoken الخاص ؛ AccessToken AccessToken الخاص ؛ الرمز المميز للسلسلة الخاصة ؛ سلسلة خاصة TokenSecret ؛ private oauthconstant () {} ؛ مثيل OauthConstant الثابتة العامة الثابتة () {if (مثيل == null) مثيل = جديد OauthConstant () ؛ مثيل العودة ؛ } public Weibo getWeibo () {if (weibo == null) weibo = new weibo () ؛ إرجاع Weibo ؛ } AccessToken getAccessToken () {return AccessToken ؛ } public void setAccessToken (AccessToken AccessToken) {this.accessToken = AccessToken ؛ this.token = accessToken.getToken () ؛ this.tokensecret = accessToken.getTokenSecret () ؛ } requesttoken getRequestToken () {return requestToken ؛ } public void setRequestToken (requestToken requestToken) {this.requestToken = requestToken ؛ } السلسلة العامة getToken () {return token ؛ } public void settoken (string token) {this.token = token ؛ } السلسلة العامة getTokenSecret () {return tokensecret ؛ } public void settokensecret (سلسلة tokensecret) {this.tokensecret = tokensecret ؛ }}التالي هو البرنامج الرئيسي الأكثر أهمية:
حزمة com.pocketdigi.weibo ؛ استيراد java.io.file ؛ استيراد weibo4android.weibo ؛ استيراد weibo4android.weiboException ؛ استيراد weibo4android.http.accesstoken ؛ استيراد weibo4android.http.requesttoken ؛ استيراد Android.App.Activity ؛ استيراد Android.content.intent ؛ استيراد Android.content.sharedPreferences ؛ استيراد Android.content.sharedPreferences.Editor ؛ استيراد Android.net.uri ؛ استيراد Android.os.bundle ؛ استيراد Android.view.view ؛ Import Android.View.view.onclickListener ؛ استيراد Android.widget.button ؛ استيراد Android.widget.edittext ؛ استيراد Android.widget.toast ؛ يمتد الطبقة العامة الرئيسية النشاط { /** يسمى عند إنشاء النشاط لأول مرة. */ string key = "" ، secret = "" ؛ زر تسجيل الدخول ، إرسال ؛ حالة edittext ؛ Override public void onCreate (bundle SaveInstancestate) {super.oncreate (SaveInstancestate) ؛ setContentView (R.Layout.main) ؛ System.SetProperty ("Weibo4j.Oauth.ConsumerKey" ، "3997936609") ؛ System.SetProperty ("Weibo4j.Oauth.ConsumersEcret" ، "8BC9E3BFD6AE8E3B2B8BDA9079918950") ؛ // قم بتعيين تسجيل الدخول السري والسري للتطبيق المطبق على تطبيق Sina Open Platform = (زر) FindViewById (r.id.login) ؛ إرسال = (زر) findViewById (r.id.send) ؛ الحالة = (edittext) findViewById (r.id.status) ؛ login.setOnClickListener (جديد onClickListener () {Override public void onClick (view v) {// todo method method method clud adul () ؛ // login}}) ؛ send.setOnClickListener (new onClickListener () {Override public void onClick (view v) {// todo method method method aducting () ؛ // login}}) ؛ send.setOnClickListener (new onClickListener () {Override public void onClick (view v) {// todo method method method str string text = string.valueof (status.getText ()) ؛ weibo weibo = new weibo () ؛ f = ملف جديد (/sdcard/خلفية/129567208597069400.jpg ") ؛ (WeiboException e) {// todo catch e.printstacktrace () ؛ } override void void onStart () {// todo method method method tuto super.onstart () ؛ // تحقق من عند البدء ، تحقق مما إذا كان يأتي من صفحة الويب لتسجيل الدخول // إذا كانت الإجابة بنعم ، احصل على مفتاح و secret // وإلا اقرأ مشتركين // إذا لم تتمكن من الحصول على مفتاح وسرية ، فقم بتسجيل الدخول مباشرة uri uri = this.getIntent (). getData () ؛ if (uri! = null) {// إذا كان متصفحًا ، فحاول {requestToken requestToken = OauthConstant.getInstance () .getRequestToken () ؛ AccessToken AccessToken = requestToken.getAccessToken (Uri .getQueryParameter ("OAUTH_VERIFIER")) ؛ oauthconstant.getInstance (). setAccessToken (AccessToken) ؛ // Save Editor servitata = getSharedPreferences ("Weibo" ، 0) .edit () ؛ sharedata.putString ("key" ، accessToken.getToken ()) ؛ sharedata.putString ("secret" ، AccessToken.getTokenSecret ()) ؛ servatata.commit () ؛ key = AccessToken.getToken () ؛ secret = AccessToken.getTokenSecret () ؛ } catch (WeiboException e) {E.PrintStackTrace () ؛ }} else {// إذا بدأ المستخدم إعدادات sharedpreferences = getSharedPreferences ("Weibo" ، 0) ؛ key = settings.getString ("key" ، "") ؛ secret = settings.getString ("secret" ، "") ؛ } if (key.equals ("") || secret.equals ("")) {toast.maketext (هذا ، "لم يتم تسجيل الدخول حتى الآن" ، toast.length_long) .show () ؛ تسجيل الدخول()؛ // Skip to Browser Login}} login public void () {weibo weibo = oauthConstant.getInstance (). getWeibo () ؛ requestToken requestToken ؛ حاول {requestToken = Weibo.getoauthRequestToken ("sina: // weibo") ؛ // من أجل تجنب النزاعات مع تطبيقات مماثلة ، يرجى تغيير URI بنفسك uri uri2 = uri.parse (requestToken.getAuthenticationUrl ()+ "& from = xweibo") ؛ oauthconstant.getInstance (). setRequestToken (requestToken) ؛ StartActivity (نية جديدة (intent.action_view ، uri2)) ؛ } catch (WeiboException e) {E.PrintStackTrace () ؛ }}}تحتاج إلى استيراد العموم HTTPClient-3.0.1.jar عند إرسال الصور ، وإلا سيتم الإبلاغ عن خطأ. بالطبع ، Weibo4android-1.2.0.jar لا غنى عنه.