Weibo.java
การคัดลอกรหัสมีดังนี้:
@Override
void onCreate (Bundle SavedInstancestate)
super.oncreate (SavedInstancestate);
SetContentView (r.layout.user_center);
// สร้างอินสแตนซ์ Weibo
mweiboauth = ใหม่ weiboauth (นี่คือค่าคงที่แอป _Key
ค่าคงที่ REDIRECT_URL, ค่าคงที่ SCOPE);
// สร้างตัวอย่างอินเตอร์เฟสการแชร์ Weibo
mweiboshareapi = weibosharesdk.createweiboapi (นี่, ค่าคงที่ app_key);
// เมื่อกิจกรรมถูกนำไปใช้ใหม่ (กิจกรรมอยู่ในพื้นหลังมันอาจถูกฆ่าตายเนื่องจากหน่วยความจำไม่เพียงพอ)
// คุณต้องโทร {@link iweiboshareapi#handlewiboresponse} เพื่อรับข้อมูลที่ส่งคืนโดยไคลเอนต์ Weibo
// การดำเนินการสำเร็จกลับมาจริงและโทร {@link iweibohandler.response#onResponse};
// ล้มเหลวในการส่งคืนเท็จไม่มีการเรียกกลับด้านบนเรียกว่า
if (savedinstancestate! = null) {
mweiboshareapi.handleweiboresponse (getintent (), สิ่งนี้);
-
-
-
* ตรวจสอบว่าผู้ใช้ได้ติดตั้ง Sina Weibo หรือไม่
-
โมฆะสาธารณะ isnotinstall () {
พยายาม {
// ตรวจสอบว่าสภาพแวดล้อมไคลเอนต์ Weibo เป็นเรื่องปกติหรือไม่
if (mweiboshareapi.checkenvironment (จริง)) {
// ลงทะเบียนแอปพลิเคชันของบุคคลที่สามไปยังไคลเอนต์ Weibo
// อย่างไรก็ตามการรวมและการแบ่งปันสิทธิ์ของคอลัมน์สิ่งที่แนบมานี้จำเป็นต้องมีแอปพลิเคชันความร่วมมือ
mweiboshareapi.registerapp ();
startinashare ();
-
} catch (weiboshareexception e) {
E.PrintStackTrace ();
toast.maketext (usercenter.his, e.getMessage (), toast.length_long)
.แสดง();
-
if (dialog! = null) {
Dialog.dismiss ();
-
-
-
* หมวดการตรวจสอบสิทธิ์และการอนุญาต Weibo และการอนุญาต 1. เมื่ออนุญาต SSO คุณต้องเรียกมันว่าใน {@link #onactivityResult}
* {@link ssohandler#qualizeCallback} การโทรกลับจะถูกดำเนินการ 2. ไม่ใช่ SSO
* เมื่อได้รับอนุญาตการโทรกลับจะถูกดำเนินการหลังจากการอนุญาตเสร็จสิ้น เมื่อการอนุญาตสำเร็จโปรดบันทึก access_token, expires_in, uid และข้อมูลอื่น ๆ
* SharedPreferences ใน
-
คลาส AuthListener ใช้ WeiboauthListener {
@Override
โมฆะสาธารณะ oncomplete (ค่าบันเดิล) {
// วิเคราะห์โทเค็นจากชุดมัด
MacCessToken = OAuth2AccessToken.parseAccessToken (ค่า);
if (maccesstoken.issessionValid ()) {
// บันทึกโทเค็นไปยังการแบ่งปัน
AccessTokenKeeper.writeaccessToken (usercenter.his, this,
Maccesstoken);
SendMessage ();
-
-
@Override
โมฆะสาธารณะ Oncancel () {
-
@Override
โมฆะสาธารณะ onweiboexception (Weiboexception e) {
toast.maketext (usercenter.his, this,
"ข้อยกเว้นการรับรองความถูกต้อง:" + e.getMessage (), toast.length_long)
.แสดง();
-
-
-
* การอนุญาตผู้ใช้ Sina Weibo
-
โมฆะสาธารณะ startinashare () {
mssohandler = ใหม่ ssohandler (usercenter.his, mweiboauth);
// อ่านข้อมูลเช่น AccessToken ที่บันทึกครั้งสุดท้ายจากการแบ่งปัน
MacCessToken = AccessTokenKeeper.ReadAccessToken (นี่);
// ถ้าโทเค็นถูกต้องโทรและส่ง Weibo โดยตรง
if (maccesstoken.issessionValid ()) {
SendMessage ();
} อื่น {
mssohandler.authorize (ใหม่ AuthListener ());
-
-
-
* @see {@link activity#onnewintent}
-
@Override
ได้รับการป้องกันช่องว่าง (เจตนาเจตนา) {
super.onnewintent (เจตนา);
// หลังจากโทรหา Weibo จากแอปพลิเคชันปัจจุบันและแชร์เมื่อกลับไปยังแอปพลิเคชันปัจจุบันคุณต้องเรียกใช้ฟังก์ชั่นนี้ที่นี่
// เพื่อรับข้อมูลที่ส่งคืนโดยไคลเอนต์ Weibo
// {@link iweibohandler.response#onResponse};
mweiboshareapi.handleweiboresponse (เจตนานี้);
-
-
* เมื่อออกจากกิจกรรมการอนุญาต SSO ฟังก์ชั่นจะถูกเรียก
-
* @see {@link activity#onactivityResult}
-
@Override
ได้รับการป้องกันโมฆะ onactivityResult (Int RequestCode, int resultCode, ข้อมูลเจตนา) {
super.onactivityResult (requestcode, resultcode, data);
// การเรียกร้องการโทรกลับของ SSO
// สำคัญ: กิจกรรมที่เริ่มต้นการเข้าสู่ระบบ SSO จะต้องเขียน onactivityResult ใหม่
if (mssohandler! = null) {
mssohandler.authorizeCallback (requestcode, resultcode, data);
-
-
-
* รับข้อมูลที่ร้องขอโดย Micro-client เมื่อไคลเอนต์ Weibo เรียกแอปพลิเคชันปัจจุบันและแชร์วิธีการนี้จะถูกเรียก
-
* @param baserequest
* Weibo ขอวัตถุข้อมูล
* @see {@link iweiboshareapi#handlewiborequest}
-
@Override
โมฆะสาธารณะ onResponse (baseresponse baseresp) {
สวิตช์ (baseresp.errcode) {
กรณี wbconstants.errorCode.err_ok:
if (publicfun.sharecondition ()) {
Gainbobi ();
} อื่น {
toast.maketext (นี่, r.string.share_success, toast.length_long)
.แสดง();
-
หยุดพัก;
กรณี wbconstants.errorCode.err_cancel:
หยุดพัก;
กรณี 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}
-
โมฆะส่วนตัว 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
* มีหน้าเว็บสำหรับเนื้อหาที่ใช้ร่วมกันหรือไม่?
-
โมฆะส่วนตัว sendmultimessage () {
// 1. เริ่มต้นข้อความการแชร์บน Weibo
Weibomultimessage Weibomessage = ใหม่ 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.his, this,
getResources (). getString (r.string.micro_blog));
if (dialog! = null) {
Dialog.dismiss ();
-
-
-
* สร้างวัตถุข้อความ
* @return วัตถุข้อความ
-
TextObject ส่วนตัว getTextObj () {
TextObject TextObject = new TextObject ();
textObject.text = getResources (). getString (r.string.share_content);
ส่งคืน textobject;
-
-
* สร้างวัตถุข้อความมัลติมีเดีย (หน้าเว็บ)
* @return Multimedia (หน้าเว็บ) วัตถุ
-
private WebPageObject getWebPageObj () {
WebPageObject mediaObject = new WebPageBject ();
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);
คืน MediaObject;
-
-
* คลาสนี้กำหนดพารามิเตอร์ที่จำเป็นสำหรับการอนุญาต Weibo
* @author Sina
* @Since 2013-10-07
-
AccessTokenkeeper ระดับสาธารณะ {
private Static Final String Preferences_name = "com_weibo_sdk_android";
สตริงสุดท้ายคงที่ส่วนตัว key_uid = "uid";
สตริงสุดท้ายคงที่ส่วนตัว key_access_token = "access_token";
สตริงสุดท้ายคงที่ส่วนตัว key_expires_in = "expires_in";
-
* บันทึกวัตถุโทเค็นลงในการแบ่งปัน
-
* บริบทแอปพลิเคชันบริบท @param
* @param โทเค็นโทเค็นวัตถุ
-
โมฆะสาธารณะคงที่ writeaccessToken (บริบทบริบท, โทเค็น OAuth2AccessToken) {
if (null == บริบท || null == โทเค็น) {
กลับ;
-
SharedPreferences pref = context.getSharedPreferences (preferences_name, context.mode_append);
editor editor = pref.edit ();
editor.putString (key_uid, token.getuid ());
editor.putString (key_access_token, token.getToken ());
editor.putlong (key_expires_in, token.getexpirestime ());
editor.Commit ();
-
-
* อ่านข้อมูลโทเค็นจาก SharedPreferences
-
* บริบทแอปพลิเคชันบริบท @param
-
* @return กลับไปที่วัตถุโทเค็น
-
public Static Oauth2accessToken ReadAccessToken (บริบทบริบท) {
ถ้า (null == บริบท) {
คืนค่า null;
-
oauth2accessToken โทเค็น = ใหม่ oauth2accessToken ();
SharedPreferences pref = context.getSharedPreferences (preferences_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));
โทเค็นกลับมา;
-
-
* ล้างข้อมูลโทเค็นใน SharedPreferences
-
* บริบทแอปพลิเคชันบริบท @param
-
โมฆะคงที่สาธารณะชัดเจน (บริบทบริบท) {
ถ้า (null == บริบท) {
กลับ;
-
SharedPreferences pref = context.getSharedPreferences (preferences_name, context.mode_append);
editor editor = pref.edit ();
editor.Clear ();
editor.Commit ();
-
-
ข้างต้นเป็นเรื่องเกี่ยวกับบทความนี้และฉันหวังว่ามันจะเป็นประโยชน์สำหรับทุกคนที่จะเป็นอาจารย์ Java