วันนี้ฉันมีการศึกษาเกี่ยวกับ API ของ Sina Weibo และตอนนี้ฉันได้ตระหนักถึงหน้าที่ของการเผยแพร่ Weibo รวมถึง Weibo พร้อมรูปภาพ เพื่อความปลอดภัย API ของ Sina Weibo ไม่ได้ให้ฟังก์ชั่นการเข้าสู่ระบบด้วยรหัสผ่านบัญชี Weibo แต่ใช้การอนุญาต OAuth ผู้ใช้เข้าถึงเว็บไซต์ SINA ผ่านเบราว์เซอร์เพื่อเข้าสู่ระบบหลังจากเข้าสู่ระบบในความสำเร็จเบราว์เซอร์จะส่งคืนคีย์และความลับไปยังโปรแกรม
main.xml:
<? xml version = "1.0" การเข้ารหัส = "utf-8"?> <linearlayout xmlns: Android = "http://schemas.android.com/apk/res/android" Android: การวางแนว Android: layout_width = "fill_parent" Android: layout_height = "wrap_content" Android: id = "@+id/ล็อกอิน" Android: text = "เข้าสู่ระบบ"/> <edittext Android: id = "@+id/id/idt Android: คำใบ้ = "ป้อนข้อความ Weibo" /> <ปุ่ม Android: layout_width = "Fill_parent" Android: layout_height = "WRAP_CONTENT" Android: id = "@+id /ส่ง" Android: text = "เผยแพร่" />
ปุ่มเข้าสู่ระบบกล่องอินพุตและปุ่มเผยแพร่เนื่องจากต้องการรับข้อมูลที่ส่งคืนโดยเบราว์เซอร์คุณต้องเพิ่มตัวกรองเจตนาเมื่อลงทะเบียนกิจกรรมบน AndroidManifest.xml
<? xml version = "1.0" การเข้ารหัส = "utf-8"?> <manifest xmlns: Android = "http://schemas.android.com/apk/res/android" package = "com.pocketdigi.weibo" Android Android: minsdkversion = "7" /> <แอปพลิเคชัน Android: icon = "@drawable /icon" Android: label = "@string /app_name"> <intent-filter> <การกระทำ Android: name = "Android.intent.Action.main" /> <intent-filter> <แอ็คชั่น Android: name = "Android.intent.action.view" /> <หมวดหมู่ Android: name = "Android.intent.category.default" /> <หมวดหมู่ Android: name = "Android.intent.category.browsable Sina: // Weibo--> </ittent-filter> </activity> </application> <use-permission Android: name = "Android.permission.internet"> </use-permission> </miniest>
ตัวกรองเจตนาจะต้องเขียนในสองย่อหน้า หากเขียนด้วยกันมันจะไม่เริ่ม
เพื่อความเรียบง่ายเพียงคัดลอกคลาส Oauthconstant ในตัวอย่าง Sina:
แพ็คเกจ weibo4android.androidexamples; นำเข้า weibo4android.weibo; นำเข้า weibo4android.http.accesstoken; นำเข้า weibo4android.http.requesttoken; คลาสสาธารณะ OAuthConstant {ส่วนตัว Weibo Weibo = NULL; อินสแตนซ์ Oauthconstant ส่วนตัวคงที่ = null; คำขอส่วนตัวขอทัศนคติ; AccessToken Private AccessToken; โทเค็นสตริงส่วนตัว สตริงส่วนตัว tokensecret; Private OauthConstant () {}; public Static synchronized oauthconstant getInstance () {ถ้า (อินสแตนซ์ == null) อินสแตนซ์ = new oauthConstant (); อินสแตนซ์กลับ; } สาธารณะ weibo getweibo () {ถ้า (weibo == null) weibo = new weibo (); กลับ Weibo; } Public AccessToken getAccessToken () {return AccessToken; } โมฆะสาธารณะ setAccessToken (AccessToken AccessToken) {this.accessToken = AccessToken; this.token = accessToken.getToken (); this.tokensecret = accessToken.getTokenSecret (); } Public RequestToken getRequestToken () {return requestToken; } โมฆะสาธารณะ setRequestToken (RequestToken RequestToken) {this.requestToken = RequestToken; } สตริงสาธารณะ getToken () {กลับมาโทเค็น; } โมฆะสาธารณะ Settoken (โทเค็นสตริง) {this.token = โทเค็น; } สตริงสาธารณะ getTokenSecret () {return tokensecret; } โมฆะสาธารณะ setTokenSecret (String 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; Import Android.widget.editText; นำเข้า Android.widget.toast; คลาสสาธารณะ Main ขยายกิจกรรม { /** เรียกว่าเมื่อมีการสร้างกิจกรรมครั้งแรก */ string key = "", secret = ""; เข้าสู่ระบบปุ่มส่ง; สถานะ EditText; @Override โมฆะสาธารณะ onCreate (Bundle SavedInstancestate) {super.oncreate (SavedInstancestate); 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); สถานะ = (แก้ไขข้อความ) findViewById (r.id.status); เข้าสู่ระบบ.SetOnClickListener (ใหม่ onClickListener () {@Override โมฆะสาธารณะ onClick (ดู v) {// todo วิธีการที่สร้างอัตโนมัติ stub login (); // login}}); SEND.SETONCLICKLISTENER (ใหม่ onClickListener () {@Override โมฆะสาธารณะ onClick (ดู v) {// todo วิธีการที่สร้างขึ้นอัตโนมัติ login (); // login}}); SEND.SETONCLICKLISTENER (ใหม่ onClickListener () {@Override โมฆะสาธารณะ onClick (ดู v) {// toDo วิธีการที่สร้างขึ้นอัตโนมัติสตริงข้อความสตริง = string.valueof (สถานะ. getText ()); weibo weibo = new weibo (); เฉพาะไฟล์ข้อความ F = ไฟล์ใหม่ ("/sdcard/วอลล์เปเปอร์/129567208597069400.jpg"); (Weiboexception E) {// todo บล็อก catch ที่สร้างขึ้นอัตโนมัติ e.printstacktrace ();}}}); } @Override void protected onstart () {// todo วิธีการสร้างอัตโนมัติ stub super.onstart (); // ตรวจสอบเมื่อเริ่มต้นตรวจสอบว่ามาจากหน้าเว็บเพื่อเข้าสู่ระบบ // ถ้าใช่รับคีย์และความลับ // มิฉะนั้นอ่าน SharedPreferences // หากคุณไม่สามารถรับคีย์และความลับให้กระโดดเข้าสู่ระบบโดยตรง URI = this.getIntent () getData (); if (uri! = null) {// ถ้าเป็นเบราว์เซอร์ให้ลอง {requestToken requestToken = oauthConstant.getInstance () .getRequestToken (); AccessToken AccessToken = requestToken.GetAccessToken (URI. GetQueryParameter ("OAuth_Verifier")); oauthconstant.getInstance (). setAccessToken (AccessToken); // บันทึก Editor Sharedata = getSharedPreferences ("Weibo", 0) .edit (); Sharedata.putString ("คีย์", AccessToken.getToken ()); Sharedata.putString ("Secret", AccessToken.getTokenSecret ()); Sharedata.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 (); เข้าสู่ระบบ (); // ข้ามไปยังเบราว์เซอร์เข้าสู่ระบบ}} โมฆะสาธารณะเข้าสู่ระบบ () {weibo weibo = oauthconstant.getInstance (). getWeibo (); RequestToken RequestToken; ลอง {requestToken = weibo.getoauthrequesttoken ("sina: // weibo"); // เพื่อหลีกเลี่ยงความขัดแย้งกับแอปพลิเคชันที่คล้ายกันโปรดเปลี่ยน URI ด้วยตัวเอง Uri Uri2 = uri.parse (requestToken.getAuthenticationUrl ()+ "& จาก = xweibo"); oauthconstant.getInstance (). setRequestToken (ขอ); startactivity (เจตนาใหม่ (intent.action_view, uri2)); } catch (weiboexception e) {e.printstacktrace (); -คุณต้องนำเข้า Commons-httpClient-3.0.1.jar เมื่อส่งภาพมิฉะนั้นจะมีการรายงานข้อผิดพลาด แน่นอน weibo4android-1.2.0.jar เป็นสิ่งที่ขาดไม่ได้