日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

微博Android平台SDK文档

發(fā)布時間:2023/12/8 Android 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 微博Android平台SDK文档 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

博Android平臺SDK文檔

編號:WEIBO_ANDROID_SDK?

版本:WEIBO_ANDROID_SDK V3.1.2??

?

修訂記錄:

時間

文檔版本

修訂人

備注

2012/7/20

2.0.0

?

初稿

2012/8/2

2.0.0

?

?

2013/4/17

2.1.0

?

新增分享微博

2013/9/12

2.3.0

?

新增登入登出按鈕、好友邀請接口

2013/11/11

2.4.0

?

重大版本變更:

?? 授權、分享等代碼的重構

?? 代碼、文檔等規(guī)范化

?? 開源OpenAPI部分代碼

2014/3/7

2.5.0

?

?? 重構網絡模塊代碼

?? 提供同步和異步的網絡請求接口

?? 提供網絡模塊常用接口,如獲取用戶信息

?? 提供網絡請求后的數據結構,如User、微博信息流等數據結構

?? 修正若干BUG

?? 簡化文檔

2014/11/19

3.0.0

?

?? 優(yōu)化網頁授權

?? 優(yōu)化網頁分享

?? 增加社會化評論組件

?? 增加社會化關注組件

?

2015/7/6

3.1.1

?

?? 增加手機短信注冊入口? 修改文檔說明

?? 增加微博支付接口調用說明

?? 增加刷新接口說明

2015/8/12

3.1.2

?

?? 增加游戲接口

?? 修改64位手機so讀取錯誤

?

目錄

目錄

目錄...2

1.?????概述及名詞解釋... 1

1.1 認證授權... 1

1.2 名詞解釋... 1

2.?????功能列表... 1

2.1 認證授權... 1

2.2 微博分享... 2

2.3 登錄/注銷按鈕... 2

2.4 開放接口... 2

3.?????運行示例代碼... 3

3.1 導入工程... 3

3.2 修改debug.keystore. 3

3.3 編譯運行... 4

4.?????微博SDK及DEMO工程目錄結構及分析... 5

4.1 閉源部分結構分析... 5

4.2 開源部分結構分析... 6

4.3 Demo部分結構分析... 6

5.?????集成前準備... 7

5.1 申請應用程序的APP_KEY. 7

5.2 注冊應用程序的包名和簽名... 7

5.3 選擇應用的集成方式... 8

5.4 在應用中添加SDK所需要的權限... 9

6.?????授權分享等示例代碼分析... 10

6.1 認證授權... 10

6.2 分享微博... 13

6.3 一鍵登錄/注銷按鈕... 17

7.?????OpenAPI示例代碼分析... 19

7.1???????????用戶信息接口... 19

7.2 邀請好友接口... 20

7.3 刷新token? 授權日期 接口... 21

8.?????社會化組件... 23

8.1關注組件(AttentionComponentView)...23

8.2 評論組件(CommentComponentView)... 24

9. 支付組件... 25

9.1支付示例...25

9.2支付參數說明...26

9.3支付接口錯誤返回碼說明...27

9.4簽名機制...28

10????????????問題... 30

10.1?????????授權不成功問題... 30

10.2 如何實現(xiàn)LinkCard效果?... 30

10.3 如何實現(xiàn)附件欄集成分享?... 30

10.4 第三方如何申請接口權限?... 31

11?????????????第三方App 微博下載合作接口... 31

12?????????????游戲接入... 32

?


1.??概述及名詞解釋

1.1認證授權

新浪微博Android SDK為開發(fā)者提供了Oauth2.0授權認證,并集成SSO登錄功能,使第三方應用無需了解復雜的驗證機制即可進行授權登錄操作,并提供微博分享功能,第三方應用可直接通過微博客戶端進行分享。

本文檔介紹了新浪微博Android SDK的三種授權方式,各種分享、獲取用戶信息等常用接口,并給出簡單的示例分析,幫助第三方開發(fā)者快速集成應用。

1.2名詞解釋

名詞

注解

AppKey

分配給每個第三方應用的App Key,用于鑒權身份,顯示來源等功能。

RedirectURI

第三方應用授權回調頁面。

授權回調頁對移動客戶端應用來說對用戶是不可見的,所以定義為何種形式都將不影響,但是沒有定義將無法使用SDK認證登錄。建議使用默認回調頁https://api.weibo.com/oauth2/default.html

可以在“新浪微博開放平臺->我的應用->應用信息->高級應用->授權設置->應用回調頁”中找到。

Scope

Scope是OAuth2.0新版授權頁的一個功能,通過scope平臺將開放更多的微博核心功能給開發(fā)者,同時也加強用戶隱私保護,提升用戶體驗,用戶在新OAuth2.0授權頁中有權利選擇賦予應用的功能。

AccessToken

表示用戶身份的Token,用于微博OpenAPI的調用。

Oauth2.0 Web 授權

通過WebView進行授權,并返回Token信息。

SSO授權

通過喚起微博客戶端進行授權,并返回Token信息。

Code授權

通過應用的APP_ID和APP_KEY來獲取Token,不需要應用的包名和簽名

2.??功能列表

2.1認證授權

目前微博SDK為開發(fā)者提供三種授權方式:

?? SSO授權:僅當手機安裝新浪微博??蛻舳藭r使用 SSO授權登陸,實現(xiàn)見6.1.1

?? Web 授權:在沒有客戶端的情況下,可直接使用該授權,實現(xiàn)見6.1.2

?? SSO+Web? 授權:如果手機端安裝了新浪微博客戶端的話會默認發(fā)起SSO授權,反之則進行Web授權(推薦使用) ,實現(xiàn)見6.1.3

2.2微博分享

通過微博SDK,第三方應用能夠分享文字、圖片、視頻、音樂等內容,目前分享有三種方式:

?? 有微博客戶端情況

1.?????通過第三方應用喚起微博客戶端進行分享(該分享方式為第三方客戶端通常的使用方式),實現(xiàn)見6.2.1

2.?????通過微博客戶端喚起第三方應用進行分享(該分享方式需要合作接入,參考http://t.cn/aex4JF),實現(xiàn)見6.2.2

?? 無微博客戶端情況,實現(xiàn)見6.2.3

3.?????通過OpenAPI進行分享,直接使用StatusesAPI中的upload、update或uploadUrlText函數進行分享,或直接使用AsyncWeiboRunner#requestAsync方法,自己進行拼接參數進行HTTP請求實現(xiàn)分享。

2.3登錄/注銷按鈕

微博SDK目前提供了兩類登錄按鈕:一種是一鍵登陸按鈕,一種是登陸/注銷按鈕,兩者都是調用SSO登錄接口。

2.4開放接口

微博SDK目前提供了一個OpenAPI接口調用框架,并封裝了一些簡單的開放接口,以供大家參考:

LogoutAPI

注銷接口

授權回收接口,取消用戶的授權

InviteAPI

邀請接口

好友邀請接口,向自己的微博互粉好友發(fā)送私信邀請、禮物

StatusesAPI

微博接口

獲取微博信息、刪除微博、發(fā)送微博、獲取微博官方表情等接口

FavoritesAPI

收藏接口

獲取收藏列表、收藏信息、收藏標簽,增刪改收藏列表等接口

CommentsAPI

評論接口

獲取評論列表、評論信息,刪除、回復評論等接口

FriendshipsAPI

關系接口

獲取關注列表、關注用戶Id、粉絲列表,關注或取消關注等接口

GroupAPI

分組接口

獲取好友分組列表、好友分組的微博列表,增刪改好友分組等接口

LocationAPI

地理信息

獲取坐標、返回實際位置信息等接口

PlaceAPI

位置服務

獲取用戶、用戶與好友、某個位置點、周邊的位置動態(tài)等接口

ShortUrlAPI

微博短鏈接

轉換長短鏈接,獲取鏈接點擊數、來源、微博內容、評論數等接口

AccountAPI

賬號接口

獲取登錄用戶的信息、API訪問頻率限制、學校列表、退出等接口

ActivityInvokeAPI

微博相關頁

調起微博客戶端發(fā)送微博、查看周邊人、打開個人資料等頁面接口

CommonAPI

公共服務

獲取城市列表、國家列表、時區(qū)配置表等接口

RegisterAPI

注冊接口

根據用戶填寫的信息驗證用戶填寫的昵稱是否可用接口

SearchAPI

搜索接口

搜索用戶、微博、學校、公司、應用時的聯(lián)想搜索建議等接口

SuggestionsAPI

推薦接口

獲取熱門用戶列表、感興趣的人、推薦相關微博、精品推薦等接口

TagsAPI

標簽接口

獲取用戶的標簽列表、創(chuàng)建或刪除標簽等接口

TrendsAPI

話題接口

獲取話題列表、熱門話題、關注或取消關注某話題等接口

UsersAPI

用戶接口

獲取用戶信息、用戶最新的一條微博信息等接口

3.??運行示例代碼

為了方便第三方應用更快的集成微博SDK,更清晰的了解目前微博SDK所提供的功能,可在GitHub(https://github.com/mobileresearch/weibo_android_sdk)下載整個示例工程以及對應的APK安裝包。運行工程可以通過以下兩種方式進行運行:

?? 直接安裝WeiboSDKDemo.apk至手機進行運行

?? 在Eclipse中導入并運行WeiboSDKDemo工程

我們簡要描述一下運行Demo工程的步驟:

3.1導入工程

在Eclipse中,點擊FileàImportàExisting Projects intoWorkspace,輸入正確的路徑,導入工程,如下圖:

?

注意:目前整個工程全采用中文注釋,為了防止亂碼滋生,請修改文本編碼方式為UTF-8

更改方式:EclipseàWindowàGeneralàWorkspaceàTextfile encoding。

3.2修改debug.keystore

MD5工具是根據keystore來生成簽名的,不同的keystore生成的簽名是不一樣的。此Demo的簽名是用官網提供的keystore生成的,若要順利運行Demo程序,需要進行設置或是替換keystore,兩種方法選擇一種操作即可:

方式一:替換keystore:把Android默認的debug.keystore(在C:\Users\XXXXX\.android目錄下)替換成官方在GitHub上提供的debug.keystore。

方式二:在Eclipse中設置工程keystore:在Eclipse中點擊“WindowsàPreferencesàAndroidàBuild”,在Custom debug keystore中選擇Demo中的debug.keystore,如下圖,點擊ApplyàOK,Demo即可正常運行。

注意:這一步是必須的,如果沒有替換,demo程序在運行時將無法正確的授權成功。用戶在替換前,最好先備份一下原始的debug.keystore。GitHub中debug.keysotre是新浪官方的,除了編譯運行官方DEMO外,不要直接使用它,出于安全的考慮,用戶應該為自己的應用提供一份keysotre。

3.3編譯運行

在編譯前,先Clean一下工程,然后右鍵點擊工程àRun AsàAndroid Application,即可運行。

默認的編譯target是Android 2.3.3,第三方可以自行修改成合適的版本。


?

4.??微博SDK及DEMO工程目錄結構及分析

微博SDK目前以是部分開源的形式提供給第三方開發(fā)者的,簡單來說,可以分為以下三部分:

?? 閉源部分:weibosdkcore.jar該JAR包集成了微博授權、SSO登錄以及分享等核心功能。另外,在V2.5.0中,我們將網絡模塊框架也加入其中,方便開發(fā)者進行OpenAPI的網絡請求。

?? 開源部分:WeiboSDK工程(Library),該工程引用了weibosdkcore.jar,這里面主要是對OpenAPI進行了簡單的封裝,第三方可以參考使用流程,模仿并添加自己需要的接口,利用OpenAPI接口獲取用戶信息,分享微博等。

?? Demo部分:WeiboSDKDemo工程,該工程引用了WeiboSDK工程,提供了目前微博所支持的部分功能的示例代碼。

注意:第三方在使用時,如果只需要實現(xiàn)授權和分享功能,可直接使用weibosdkcore.jar;如果想使用其它功能,可直接導入WeiboSDK工程。如何導入WeiboSDK工程請詳見:集成步驟及示例分析

4.1閉源部分結構分析

4.2開源部分結構分析

4.3Demo部分結構分析


?

5.??集成前準備

5.1申請應用程序的APP_KEY

?

用戶首先需要在微博開放平臺上對應用進行注冊,并獲取APP_KEY,添加應用的授權回調頁(Redirect URI)。詳情請仔細閱讀:移動客戶端接入(http://t.cn/aex4JF)

5.2注冊應用程序的包名和簽名

對應用授權前,需要在微博開放平臺上注冊應用程序的包名和簽名后。

?

注意:包名和簽名未注冊,或者簽名注冊不正確,都會導致無法授權。

????? 手機時間不對也會造成授權不成功。

?

??應用程序包名:指AndroidManifest.xml文件中,package標簽所代表的內容。

??應用程序簽名:該簽名是通過官方提供的簽名工具生成的MD5值 (獲取簽名按下圖所示)

下圖即為注冊應用程序的包名和簽名的頁面,可以在新浪微博“開放平臺à我的應用à應用信息à應用基本信息”處找到,點擊編輯按鈕即可注冊。

?

?

簽名軟件下載地址:

?

https://github.com/sinaweibosdk/weibo_android_sdk

?

?

?

F?使用方式:首先要安裝您需要簽名的應用,然后再安裝該工具,安裝完后,輸入您的應用程序的包名,點擊生成按鈕,即可獲得MD5簽名,如下圖所示。

F??

請注意:要簽名的第三方應用程序必須安裝在該設備上才能夠生成對應的MD5簽名

?

?

?

、

5.3選擇應用的集成方式

在集成微博SDK前,有兩種方式來集成微博SDK:

??直接導入weibosdkcore.jar:適用于只需要授權、分享、網絡請求框架功能的項目

??引用WeiboSDK工程(Library):適用于微博授權、分享,以及需要登陸按鈕、調用OpenAPI的項目

???

下面簡述下兩種導入方式的實現(xiàn):

方式一:直接導入weibosdkcore.jar?

F? 將官方的提供SDK JAR包(weibosdkcore.jar)放到工程的libs目錄下

F? 添加JAR包:工程à右鍵àpropertiesàjavabuild pathàlibrariesàaddexternal jar

方式二:引用WeiboSDK工程(Library)

F? 將WeiboSDK工程整個目錄拷貝到和你自己的工程相同的目錄下

F?
在你自己的工程中,添加WeiboSDK工程的引用:工程à右鍵àpropertiesàAndroidàAddà選擇工程,具體如下圖所示:

注意: 無論使用哪一種方式,都需要先將demo 中l(wèi)ib目錄下的對應的全部 libweibosdkcore.so文件目錄拷貝到你的目標工程中Demo工程中的weibosdkcore.jar與github上的weibosdkcore_v3.x.x.jar包是同一個。

5.4在應用中添加SDK所需要的權限 ????

<uses-permissionandroid:name="android.permission.INTERNET"/>

<uses-permissionandroid:name="android.permission.ACCESS_WIFI_STATE"/>

<uses-permissionandroid:name="android.permission.ACCESS_NETWORK_STATE"/>

<uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE"/>


打開AndroidManifest.xml文件,將SDK需要的權限添加到該文件中:

6.??授權分享等示例代碼分析

6.1認證授權

目前微博SDK提供四種授權方式,這四種授權方式都需要先實現(xiàn)以下三步:

1)????替換成自己應用的APP_KEY等參數

public interface Constants {

??? public static final String APP_KEY????? ="2045436852";?????? ?? // 應用的APP_KEY

??? public static final String REDIRECT_URL ="http://www.sina.com";//應用的回調頁

??? public static final String SCOPE = ??????????????????????????? ???//應用申請的高級權限

??????????? "email,direct_messages_read,direct_messages_write,"

??????????? + "friendships_groups_read,friendships_groups_write,statuses_to_me_read,"

??????????? + "follow_app_official_microblog," +"invitation_write";

}


若您使用的是Demo工程,需要將工程中Constants類的APP_KEY、Redirect_URL、SCOPE域替換成自己應用對應的參數,如需要實現(xiàn)好友邀請接口,需要在SCOPE參數中添加"invitation_write"值。

2)????創(chuàng)建微博授權類對象

mAuthInfo = new AuthInfo(this, Constants.APP_KEY,

Constants.REDIRECT_URL, Constants.SCOPE);


在WBAuthActivity類中,創(chuàng)建微博授權類對象,將應用的信息保存:

3)????實現(xiàn)WeiboAuthListener接口

授權成功后,SDK會將access_token、expires_in、uid等通過Bundle的形式返回,在onComplete函數中,可以獲取該信息。具體如何保存和Token信息由開發(fā)者自行處理。

class AuthListenerimplements WeiboAuthListener {

??? @Override

public void onComplete(Bundle values) {

??? mAccessToken = Oauth2AccessToken.parseAccessToken(values);// Bundle中解析 Token

??????? if (mAccessToken.isSessionValid()) {

???????????? AccessTokenKeeper.writeAccessToken(WBAuthActivity.this,mAccessToken); //保存Token

??????????????? .........

??????? } else {

??????? ??? // 當您注冊的應用程序簽名不正確時,就會收到錯誤Code,請確保簽名正確

??????????? String code = values.getString("code","");

??????????? .........

??????? }

}

.........

}


注意:當您注冊的應用程序簽名不正確時,SDK會將Code返還給用戶,請確保應用的簽名是正確的。

6.1.1僅通過微博客戶端SSO登錄方式授權

1)???? 創(chuàng)建SsoHandler對象

2)????

mSsoHandler = new SsoHandler(WBAuthActivity.this,mAuthInfo);


調用SsoHandler# authorizeClientSso方法

3)????

mSsoHandler. authorizeClientSso(new AuthListener());

@Override

protected void onActivityResult(int requestCode,int resultCode, Intent data) {

??? super.onActivityResult(requestCode, resultCode, data);

??? if (mSsoHandler !=null) {

??????? mSsoHandler.authorizeCallBack(requestCode, resultCode, data);

??? }

}


重寫Activity#onActivityResult方法,調用SsoHandler# authorizeCallBack

6.1.2 僅通過Web頁面方式授權

1)???

mSsoHandler = new SsoHandler(WBAuthActivity.this,mAuthInfo);


創(chuàng)建SsoHandler對象

2)???

mSsoHandler.authorizeWeb(new AuthListener());

?

?


調用SsoHandler#authorizeWeb方法

3)???Manifest中注冊web頁面(activity)

Web授權需要在AndroidManifest.xml中,注冊授權頁面

<activity

???? android:name="com.sina.weibo.sdk.component.WeiboSdkBrowser"

???? android:configChanges="keyboardHidden|orientation"

???? android:windowSoftInputMode="adjustResize"

???? android:exported="false" >

</activity>


6.1.3 all In one方式授權

注:此種授權方式會根據手機是否安裝微博客戶端來決定使用sso授權還是網頁授權,如果安裝有微博客戶端則調用微博客戶端授權,否則調用Web頁面方式授權

1)???? 創(chuàng)建SsoHandler對象

2)????

mSsoHandler = new SsoHandler(WBAuthActivity.this,mAuthInfo);


調用SsoHandler# authorize方法

3)????

mSsoHandler. authorize(new AuthListener());

@Override

protected void onActivityResult(int requestCode,int resultCode, Intent data) {

??? super.onActivityResult(requestCode, resultCode, data);

??? if (mSsoHandler !=null) {

??????? mSsoHandler.authorizeCallBack(requestCode, resultCode, data);

??? }

}


重寫Activity#onActivityResult方法,調用SsoHandler# authorizeCallBack

6.1.4 通過手機短信授權登錄

注:該方式由新浪提供短信下發(fā)通道 供開發(fā)者使用。調用流程與sso以及all in one方式類似,具體調用過程參見調用demo示例 。

1)???? 創(chuàng)建SsoHandler對象

2)????

mSsoHandler = new SsoHandler(WBAuthActivity.this,mWeiboAuth);


調用SsoHandler#registerOrLoginByMobile方法

3)????

注:第一個參數是String類型,用來控制“短信授權登錄”頁面的標題,傳空時默認為“驗證碼登錄”

mSsoHandler.registerOrLoginByMobile("",new AuthListener());


重寫Activity#onActivityResult方法,調用SsoHandler# authorizeCallBack

@Override

protected void onActivityResult(int requestCode,int resultCode, Intent data) {

??? super.onActivityResult(requestCode, resultCode, data);

??? if (mSsoHandler !=null) {

??????? mSsoHandler.authorizeCallBack(requestCode, resultCode, data);

??? }

}


4)???從listener 對象中獲取用戶輸入的 手機號碼 和驗證授權信息

class AuthListenerimplements WeiboAuthListener {

??? @Override

public void onComplete(Bundle values) {

??? mAccessToken = Oauth2AccessToken.parseAccessToken(values);// Bundle中解析 Token

??? String? phoneNum =? mAccessToken.getPhoneNum();//用戶輸入的電話號碼

??????? if (mAccessToken.isSessionValid()) {

???????????? AccessTokenKeeper.writeAccessToken(WBAuthActivity.this,mAccessToken); //保存Token

??????????????? .........

??????? } else {

??????? ??? // 當您注冊的應用程序簽名不正確時,就會收到錯誤Code,請確保簽名正確

??????????? String code = values.getString("code","");

??????????? .........

??????? }

}

.........

}

?


6.2分享微博

6.2.1 從第三方應用喚起微博客戶端進行分享

注意這里分享的圖片不能大于32K

?

1)????分享前準備工作

在進行微博分享前,需要在AndroidManifest.xml中,在需要接收消息的Activity(喚起微博主程序的類)里聲明對應的Action:ACTION_SDK_REQ_ACTIVITY,如下所示:

?

?

<activity

??? android:name="com.sina.weibo.sdk.demo.WBShareActivity"

??? android:configChanges="keyboardHidden|orientation"

??? android:screenOrientation="portrait">

??? <intent-filter>

??? ??? <actionandroid:name="com.sina.weibo.sdk.action.ACTION_SDK_REQ_ACTIVITY"/>

??? ??? <categoryandroid:name="android.intent.category.DEFAULT"/>

</intent-filter>

</activity>

<activity

???? android:name="com.sina.weibo.sdk.component.WeiboSdkBrowser"

???? android:configChanges="keyboardHidden|orientation"

???? android:windowSoftInputMode="adjustResize"

???? android:exported="false" >

</activity>


2)????分享實現(xiàn)

mWeiboShareAPI = WeiboShareSDK.createWeiboAPI(this, Constants.APP_KEY);

mWeiboShareAPI.registerApp();? // 將應用注冊到微博客戶端


① 在onCreate函數創(chuàng)建微博分享接口實例,并進行注冊,請確保先注冊,后分享

private TextObject getTextObj() {

??? TextObject textObject = new TextObject();

??? textObject.text = getSharedText();

??? return textObject;

}


② 創(chuàng)建要分享的內容

③ 通過IWeiboShareAPI#sendRequest喚起微博客戶端發(fā)博器進行分享

private void sendMultiMessage(boolean hasText,boolean hasImage, boolean hasWebpage,

??????? boolean hasMusic,boolean hasVideo, boolean hasVoice) {

??? WeiboMultiMessage weiboMessage = new WeiboMultiMessage();//初始化微博的分享消息

??? if (hasText) {

??????? weiboMessage. textObject = getTextObj();

??? }

??? SendMultiMessageToWeiboRequest request = new SendMultiMessageToWeiboRequest();

??? request.transaction = String.valueOf(System.currentTimeMillis());

??? request.multiMessage = weiboMessage;

??? mWeiboShareAPI.sendRequest(request);//發(fā)送請求消息到微博,喚起微博分享界面

}


④ 實現(xiàn)IWeiboHandler#Response接口,接收分享后微博返回的數據

3)????

protected void onNewIntent(Intent intent) {

??? super.onNewIntent(intent);

??? mWeiboShareAPI.handleWeiboResponse(intent,this); //當前應用喚起微博分享后,返回當前應用

}

@Override

public void onResponse(BaseResponse baseResp) {//接收微客戶端博請求的數據。

??? switch (baseResp.errCode) {

??? case WBConstants.ErrorCode.ERR_OK: ???.........

??????? break;

??? case WBConstants.ErrorCode.ERR_CANCEL:.........

??????? break;

??? case WBConstants.ErrorCode.ERR_FAIL:??.........

??????? break;

??? }

}


分享成功后效果

微博分享成功后,可以打開微博客戶端查看效果,如下圖所示:LinkCard效果實現(xiàn)請參考附錄8.2。

F?
分享新聞鏈接:???????????????????????????????? 分享視頻鏈接:

6.2.2 從微博客戶端喚起第三方應用進行分享

通過微博客戶端進行分享,即附件欄集成分享(見附錄8.3),如果沒有進行過商務合作,是無法進行該分享的

1)????分享前準備工作

<activity

??? android:name="com.sina.weibo.sdk.demo.WBShareResponseActivity"

??? android:configChanges="keyboardHidden|orientation"

??? android:screenOrientation="portrait">

??? <intent-filter>

??? ??? <actionandroid:name="com.sina.weibo.sdk.action.ACTION_SDK_RESP_ACTIVITY" />

??? ??? <categoryandroid:name="android.intent.category.DEFAULT"/>

??? </intent-filter>

</activity>


通過微博喚起第三方應用進行分享前,同樣需要在AndroidManifest.xml中,在需要接收消息的Activity(被微博喚起的程序的類)里聲明對應的Action: ACTION_SDK_RESP_ACTIVITY,如下所示:

2)????分享的實現(xiàn)步驟

mShareWeiboAPI = WeiboShareSDK.createWeiboAPI(this, Constants.APP_KEY); //創(chuàng)建分享實例

mShareWeiboAPI.handleWeiboRequest(getIntent(),this); // 處理微博客戶端發(fā)送過來的請求

@Override

protected void onNewIntent(Intent intent) {

??? .........

?? mShareWeiboAPI.handleWeiboRequest(intent,this); // 處理微博客戶端發(fā)送過來的請求

}

@Override

public void onRequest(BaseRequest baseRequest) {

??? // 保存從微博客戶端喚起第三方應用時,客戶端發(fā)送過來的請求數據對象

mBaseRequest = baseRequest;

??? .........

}


① 在onCreate函數創(chuàng)建微博分享接口實例

② 實現(xiàn)IWeiboHandler#Request接口,接收并處理微博客戶端發(fā)送過來的請求

③ 創(chuàng)建要分享的內容,實現(xiàn)代碼同6.2.1中創(chuàng)建分享內容一樣。

private void responseSingleMessage(boolean hasText,boolean hasImage,

??????? boolean hasWebpage,boolean hasMusic, boolean hasVideo) {

??? WeiboMessage weiboMessage = new WeiboMessage();

// 1. 初始化微博的分享消息

if (hasText) {

??? weiboMessage.mediaObject = getTextObj();

??? }

.........

// 2. 初始化從微博到第三方的消息請求

??? ProvideMessageForWeiboResponse response = new ProvideMessageForWeiboResponse();

??? response.transaction = mBaseRequest.transaction;

??? response.reqPackageName = mBaseRequest.packageName;

response.message = weiboMessage;

// 3. 發(fā)送響應消息到微博

??? mShareWeiboAPI.sendResponse(response);

}


④ 通過IWeiboShareAPI#sendResponse發(fā)送應答數據給微博客戶端

6.2.3 使用OpenAPI進行分享

1)???

statusesAPI = new StatusesAPI(accessToken); //創(chuàng)建微博分享接口實例


在onCreate函數創(chuàng)建微博分享接口實例

2)??? 實現(xiàn)RequestListener接口,接收并處理微博分享后結果

3)??? 調用StatusAPI#update、update或uploadUrlText函數發(fā)送微博

statusesAPI.update("要分享的內容","0.0","0.0",mListener);


注意:如果應用未通過審核,調用OpenAPI中的函數需要添加測試賬號,在“應用信息->測試帳號”中添加,否則不能調用函數,會報測試賬號已超過上限的ErrorCode。

6.3一鍵登錄/注銷按鈕

6.3.1 一鍵登錄按鈕


目前提供了以下三種樣式,如下圖:

其中,第一種為默認樣式,對于第三種樣式,目前不提供按下的效果。對于一鍵登錄,使用步驟如下:

使用步驟如下:

1)????

<!-- 默認效果,帶圖片文字的登陸按鈕 -->

<com.sina.weibo.sdk.widget.LoginButton

android:id="@+id/login_button_default"

??? android:layout_width="wrap_content"

??? android:layout_height="wrap_content"??????android:background="@drawable/com_sina_weibo_sdk_login_button_with_account_text"/>


在需要集成的Activity的布局文件中,添加按鈕:

@drawable/com_sina_weibo_sdk_login_button_with_frame_logo

@drawable/com_sina_weibo_sdk_login_button_with_original_logo


用戶可根據需要,將drawable替換成其它兩種:

2)????在對應的Activity中,為該控件設置授權認證信息和listener。

AuthInfo authInfo = new AuthInfo(this, Constants.APP_KEY, Constants.REDIRECT_URL, Constants.SCOPE); //創(chuàng)建授權認證信息

mLoginBtnDefault = (LoginButton) findViewById(R.id.login_button_default);

mLoginBtnDefault.setWeiboAuthInfo(authInfo,mLoginListener); //為按鈕設置授權認證信息


mLoginListener為WeiboAuthListener,請參考:示例分析:授權認證

3)????當用戶點擊該按鈕時,會進行SSO登陸,登陸完成后返回應用Activity,需要在Activity#onActivityResult中調用LoginButton#authorizeCallBack函數,整個登陸過程結束。授權成功后,用戶可選擇保存自己的Token。

@Override

protected void onActivityResult(int requestCode,int resultCode, Intent data) {

??? super.onActivityResult(requestCode, resultCode, data);

if (mLoginBtnDefault !=null) {

??? ??? mLoginBtnDefault.onActivityResult(requestCode, resultCode, data);

??? }

}


6.3.2 登錄/注銷按鈕


該按鈕目前提供了以下樣式,藍色和銀白色,如下圖左所示:

其中,第一種為默認樣式,第三方開發(fā)者可自行修改。登錄過程的實現(xiàn)和一鍵登錄一樣。

使用步驟如下:

1)??????

<!-- 默認效果,其 style為:@style/com_sina_weibo_sdk_loginview_default_style -->

<com.sina.weibo.sdk.widget.LoginoutButton

android:id="@+id/login_out_button_default"

??? android:layout_width="wrap_content"

??? android:layout_height="wrap_content"

style="@style/com_sina_weibo_sdk_loginview_default_style"/>


?在需要集成的Activity的布局文件中,添加按鈕:

在對應的Activity中,為該控件設置授權認證信息和listener。與一鍵登錄按鈕完全一樣,不再贅述。

當用戶點擊該按鈕時,會進行SSO登陸,其流程與一鍵登錄按鈕完全一樣,不再贅述。

2)???用戶可根據需要,將為其添加style樣式,目前有兩種選:

@style/com_sina_weibo_sdk_loginview_default_style

@style/com_sina_weibo_sdk_loginview_silver_style


注意:該style文件定義在WeiboSDK/res/values/styles.xml下,第三方可根據需要修改或重寫。

當登錄完后,該按鈕會變成注銷,方便用戶注銷。如上圖右所示。

值得注意一點的是,如果該按鈕已從當前Activity移除后(如Activity銷毀后),下次再進入該Activity時,該按鈕不會自動變成注銷(由于V2.4 SDK未保存Token信息,以后可能會考慮保存所有Session相關信息),需要用戶手動調用LoginLogoutButton#setLogoutInfo設置Token信息后,才會變成注銷。

7.??OpenAPI示例代碼分析

在V2.5.0,我們重構了網絡模塊,提供了一個簡單易用的OpenAPI接口調用框架,并封裝了一些簡單的開放接口,如發(fā)布微博、獲取用戶信息等,用戶可根據自己需要進行調用。另外,我們還提供了相應的JSON數據解析,以供第三方開發(fā)者直接調用相應的parse()函數解析JSON數據來獲取對象。


OpenAPI接口框架的類圖如下:

?

如上圖所示,AbsOpenAPI做為一個基類,提供同步請求異步請求兩種接口。對于我們的各個類型的接口,只需要從其繼承過來,拼接調用參數,調用對應方法即可。

為了適應各種不同的需求,我們的每個OpenAPI同時提供了同步和異步的網絡請求接口。

如:StatusesAPI#upload即為異步API,StatusesAPI#uploadSync即為同步API。

注:同步接口適用于第三方開發(fā)者有自己的異步請求機制。

7.1?用戶信息接口

1)???

mUsersAPI = new UsersAPI(mAccessToken); //獲取用戶信息接口


通過Token初始化UsersAPI接口

2)???

private RequestListenermListener = new RequestListener() {

??? @Override

??? public void onComplete(String response) {

??????? if (!TextUtils.isEmpty(response)) {

??????????? // 調用 User#parseJSON串解析成User對象

??????????? User user = User.parse(response);

.........

??????? }

??? }

}

}


實現(xiàn)異步請求接口回調,并在回調中直接解析User信息

3)???

long uid = Long.parseLong(mAccessToken.getUid());

mUsersAPI.show(uid, mListener);


調用接口

7.2邀請好友接口

該接口支持登錄用戶向自己的微博互粉好友發(fā)送私信邀請、禮物。該接口的詳細內容可參見:

http://open.weibo.com/wiki/2/messages/invite

邀請好友接口權限開通方法見附錄8.4,集成該接口步驟如同注銷Token一樣。

1)???實現(xiàn)RequestListener接口

2)???創(chuàng)建邀請接口參數

在初始化InviteApi類的實例時,需要設置以下內容:

?

參數名稱

作用

InviteAPI.KEY_TEXT(必填)

要回復的私信文本內容。文本大小必須小于300個漢字

InviteAPI.KEY_URL(可選)

邀請點擊后跳轉鏈接。默認為當前應用地址

InviteAPI. KEY_INVITE_LOGO(可選)

邀請 Card 展示時的圖標地址,大小必須為 80px X 80px,僅支持 PNG、JPG 格式

JSONObject jsonObject = new JSONObject();

try {

??? jsonObject.put(InviteAPI.KEY_TEXT,"這個游戲太好玩了,加入一起玩吧");

??? jsonObject.put(InviteAPI.KEY_URL,"http://app.sina.com.cn/appdetail.php?appID=770915");

??? jsonObject.put(InviteAPI.KEY_INVITE_LOGO,"http://hubimage.com2us.com/hubweb/contents/123_499.jpg");

??? } catch (JSONException e) {

??????? e.printStackTrace();

}

}


實現(xiàn)代碼如下:

3)???

new InviteAPI(accessToken).sendInvite(uid, jsonObject,mInviteRequestListener);


創(chuàng)建 InviteAPI類的實例,并調用其InviteAPI#sendInvite方法:

?

?

7.3 刷新token? 授權日期 接口

1? ?授權有效期內重新授權
如果用戶在授權有效期內重新打開授權頁授權(如果此時用戶有微博登錄狀態(tài),這個頁面將一閃而過),那么微博會為開發(fā)者自動延長access_token的生命周期,請開發(fā)者維護新授權后的access_token值。
2 ?通過Refresh?Token刷新授權有效期
除此之外,我們也提供了通過?Refresh?Token?刷新的方式來延續(xù)授權有效期。目前我們每次授權以后,授權的有效期時間都在7天以內,如果超過有效期還需要用戶重新登錄授權,

現(xiàn)在提供一個刷新的接口, 可以每次刷新后? 新獲得Access?Token的也是7天。

?

但需要注意的是:只有使用微博官方移動SDK的移動應用,才可以從SDK的方法中獲取到?Refresh?Token。
Refresh?Token?是?Access?Grants?的一種,在獲取?Access?Token?時,認證服務器將返回相應的?Refresh?Token,如果?Access?Token?過期,就可以用?Refresh?Token?去刷新。


Refresh?Token?也是有有效期的,Refresh?Token?的有效期目前為30天,在有效期內隨時可以刷新。

Refresh?Token?和Access?Token? 是不同的,

Refresh?Token?是用來標識刷新的token ;? Access?Token 是授權token. 需要注意


通過?Refresh?Token?刷新得到的新的?Access?Token?,其有效期等同于原來的有效期,即原來?Access?Token?的有效期是7天,則新獲得的也是7天。
簡單來說就是對于使用了微博移動SDK的移動應用,授權(Access?Token)7天有效,30天可續(xù),每續(xù)一次增加7天有效。?

?

具體的調用時機可以 根據自己的業(yè)務需求安排用。

在我們提供的 demo中有一個類是? ?WBOpenAPIActivity?? 其中的refreshTokenRequest() 方法

調用此方法的前提需要登錄授權。具體的實現(xiàn)形式 可以根據自己的需求修改。

?????? private void refreshTokenRequest() {

??????? Oauth2AccessToken?? token? =? AccessTokenKeeper.readAccessToken(WBOpenAPIActivity.this);

??????? RefreshTokenApi.create(getApplicationContext()).refreshToken(

??????????????? Constants.APP_KEY, token.getRefreshToken(),new RequestListener() {

??????????????????

??????????? @Override

??????????? public void onWeiboException( WeiboException arg0 ) {

??????????????? Toast.makeText(WBOpenAPIActivity.this,"RefreshToken Result : " + arg0.getMessage(), Toast.LENGTH_LONG).show();

??????????????

??????????? }

???????????

??????????? @Override

??????????? public void onComplete( String arg0 ) {

??????????????? Toast.makeText(WBOpenAPIActivity.this,"RefreshToken Result : " + arg0, Toast.LENGTH_LONG).show();

??????????? }

??????? });

??? };


?

返回結果示例:

{"access_token":"2.00tl9L9DyY87OC5b4eab555bbfU2OD","remind_in":"648693","expires_in":648693,"refresh_token":"2.00tl9L9DyY87OCad1cd7e0670G8J8O","uid":"3164868113"}

access_token?? 是返回的token?

refresh_token? 是返回的refresh? token? 下次刷新需要傳入此參數

uid? 用戶id

remind_in 從現(xiàn)在起到授權token失效的 ?秒數。

?

?

8.??社會化組件

?

8.1關注組件(AttentionComponentView)

創(chuàng)建請求參數

/**

???????? * 創(chuàng)建請求參數(如果用戶已經授權,并且有token)

???????? * @param appKey

???????? * @param token

???????? * @param attentionUid 需要 關注/取消關注 的用戶UID

???????? * @param attentionScreenName 需要 關注/取消關注 的用戶昵稱(attentionUid 和 attentionScreenName 兩?????????????????????????????????????????????????????????????????????????? 者選其一就行)

???????? * @param listener 如果想獲取授權信息,需要傳出授權回調Listener

???????? * @return

???????? */

??????? public static RequestParam createRequestParam(String appKey,

??????????????? String token, String attentionUid, String attentionScreenName,

??????????????? WeiboAuthListener listener)

???????

?

?

??????? /**

???????? * 創(chuàng)建請求參數(如果用戶沒有授權)

???????? * @param appKey

???????? * @param attentionUid 需要 關注/取消關注 的用戶UID

???????? * @param attentionScreenName 需要 關注/取消關注 的用戶昵稱(attentionUid 和 attentionScreenName 兩??????????????????????????????????????????????????????????????????????????????????? 者選其一就行)

???????? * @param listener 如果想獲取授權信息,需要傳出授權回調Listener

???????? * @return

???????? */

??????? public static RequestParam createRequestParam(String appKey, String attentionUid, String attentionScreenName,

??????????????? WeiboAuthListener listener)


public void setAttentionParam(RequestParam param)


設置請求參數

8.2評論組件(CommentComponentView)

創(chuàng)建請求參數

/**

???????? * 創(chuàng)建請求參數(如果用戶已經授權,并且有token)

???????? * @param appKey

???????? * @param token

???????? * @param commentTopic 評論的話題

???????? * @param commentContent 評論的內容

???????? * @param category 評論的內容的分類

???????? * @param listener 如果想獲取授權信息,需要傳出授權回調Listener

???????? * @return

???????? */

??????? public static RequestParam createRequestParam(String appKey,

??????????????? String token, String commentTopic, String commentContent, Category category,

??????????????? WeiboAuthListener listener)

???????

??????? /**

???????? * 創(chuàng)建請求參數(如果用戶沒有授權)

???????? * @param appKey

???????? * @param commentTopic 評論的話題

???????? * @param commentContent 評論的內容

???????? * @param category 評論的內容的分類

???????? * @param listener 如果想獲取授權信息,需要傳出授權回調Listener

???????? * @return

???????? */

??????? public static RequestParam createRequestParam(String appKey, String commentTopic, String commentContent,

??????????????? Category category, WeiboAuthListener listener)


public void setCommentParam(RequestParam param)


設置請求參數

?

?

?

9.支付組件

微博支付需要單獨申請,開通請聯(lián)系:wb_pay_kf@vip.sina.com

?9.1支付示例

// 初始化環(huán)境

IWeiboShareAPI mWeiboShareAPI = WeiboShareSDK.createWeiboAPI(this, Constants.APP_KEY,false);

// 注冊第三方應用到客戶端中注冊不成功則無法支付

mWeiboShareAPI.registerApp();

// 微博當前版本是否支持支付

boolean isSupportPay = mWeiboShareAPI.isSupportWeiboPay();

?


1) 初始化支付環(huán)境????

2)生成訂單參數

// 生成可以支付的訂單參數,格式如下

??? ?String order =

"source=1941657700&seller_id=3292350247&sign_type=md5&notify_url=http%3A%2F%2Fwww.baidu.com&

out_trade_no=test001427189083&subject=%E6%8E%A5%E5%85%A5%E6%94%B6%E9%93%B6%E5%8F%B0%E5%AE%9E

%E4%BE%8B&pay_type=1&total_fee=0.01&body=%E6%8E%A5%E5%85%A5%E6%94%B6%E9%93%B6%E5%8F%B0%E5%AE

%9E%E4%BE%8B&show_url=http%3A%2F%2Fwww.baidu.com&it_b_pay=3d&extra=%E9%A2%9D%E5%A4%96%E9%80%

8F%E4%BC%A0%E5%8F%82%E6%95%B0&sign=f3b18ea552afa60d68338c306cac2604&is_route=1";

?


?

3)呼起支付

?

if (isSupportPay) {

??????????? ? mWeiboShareAPI.launchWeiboPay(order);

}

?


?

注:無法正常呼起多為訂單參數不正確或者第三方APP沒有得到認證

?

9.2支付參數說明

?

參數

? 參數說明

類型

?? 是否必填

?備注

source

AppKey

String

在微博開放平臺申請應用時分配的AppKey,調用接口時候代表應用的唯一身份

seller_id

商戶微博UID

int

?

sign_type

簽名方式

String

目前簽名僅支持md5

sign

簽名

String

根據url參數以及密鑰生成, 詳見“3.簽名機制”

notify_url

后臺回調地址

String

用來通知商戶支付結果,判斷支付成功請僅以此接口為準,最長255位

out_trade_no

商戶訂單號

String

商戶網站唯一訂單號,最長64位

subject

商品名稱

String

該參數最長為128個漢字

pay_type

支付業(yè)務類型

int

根據業(yè)務規(guī)劃給出參數列表,如1=實物商品售賣,2=虛擬商品售賣,3=捐助,4=權益等

price

商品單價

float

單位為 RMB-Yuan. 取值范圍[0.01,9999999999.00],精確到小數點后倆位.

規(guī)則:price和quantity能替代total_fee。即存在price和quantity就不能存在total_fee;存在total_fee就不能存在price和quantity

quantity

購買數量

int

規(guī)則:price和quantity能替代total_fee。即存在price和quantity就不能存在total_fee;存在total_fee就不能存在price和quantity

total_fee

交易金額

float

單位為 RMB-Yuan.取值范圍[0.01,9999999999.00],精確到小數點后倆位

body

商品描述

String

該參數最長為500個漢字

show_url

頁面回跳地址

String

用來通知商戶支付結果,用戶在網頁支付成功頁面,點擊“返回商戶”時的回跳地址,

最長255位

it_b_pay

超時時間

String

交易請求自創(chuàng)建時間起,自動關閉的時間,取值范圍:1m(分鐘)、1h(小時)、1c(當天0點)、15d(天),不接受小數點,默認3d

is_route

必傳

值為1

String

?

req_channel

請求渠道

String

1:跨端支付

extra

額外參數

String

發(fā)起支付時透傳的參數,可為不包含"="、"&"等特殊字符的字符串

?

?

? 9.3支付接口錯誤返回碼說明

?

返回錯誤碼error_code

?含義

?error

?說明

100000

Succeeded

成功

220001

操作失敗

操作失敗

220002

非法請求

非法請求

220003

請登錄

登錄失敗

220004

驗證簽名失敗

驗證簽名失敗

220005

xxxx

參數驗證錯誤,以error描述為準

220006

無效的訂單號

無效的訂單號

220007

用戶信息錯誤

用戶信息錯誤

220008

無效的uid

無效的uid

220009

無效的價格

無效的價格

220010

無效id

無效id

220011

無效time

無效time

220012

無效平臺

無效平臺

220013

數據已生成

數據已生成

220014

數據為空

數據為空

220015

無效支付渠道

無效支付渠道

220016

無效操作

無效操作

220017

無效商家

無效商家

?

??9.4簽名機制

9.4.1 生成待簽名的字符串

??? 9.4.1.1 需要參與簽名的參數

??????? 在請求參數列表中,除去sign ,sign_type倆個參數外,其他需要使用到的參數皆是要簽名的參數。(個別接口中參數sign_type也需要參與簽名)

??????? 在通知返回參數列表中,除去sign ,sign_type倆個參數外,凡是通知返回回來的參數

皆是要簽名的參數。

??? 9.4.1.2 需生成待簽名字符串

??????? 對數組里的每一個值從a到z的順序排序,若遇到相同首字母,則看第二個字母,以此

類推。排序完成之后,再把所有數組值以“&”字符連接起來,組成的字符串便是待簽名的字符串。

?? ?9.4.1.3注意

??? 沒有值的參數無需傳遞,也無需包含到待簽名數據中。

??? 根據HTTP協(xié)議要求,傳遞參數中的值中如果存在特殊字符(如:&@等),那么該

值需要做URL Encoding,這樣請求接收方才能接收到正確的參數值。這種情況下,待簽名

數據應該是原生值而不是encoding之后的值。

?

?9.4.2 簽名?

??? 9.4.2.1 MD5簽名

??????? 在MD5簽名時,需要私鑰參與簽名。MD5的私鑰是以英文字母和數字組成的字符

串。商戶提交完資料審核后,會隨同開發(fā)文檔等一起發(fā)送到指定郵箱。

??? 9.4.2.2 請求時簽名

??????? 當拿到請求時的待簽名字符串后,需要把私鑰直接拼接到待簽名字符串后面,形成新

的字符串,利用MD5的簽名函數對這個新的字符串進行簽名運算,從而得到32位簽名結果

字符串(該字符串賦值于參數sign)。

??? 9.4.2.3 通知返回時驗證簽名

?????? 當獲得通知返回時的待簽名字符串后,同理,需要把私鑰直接拼接到待簽名字符串后

面,形成新的字符串,利用MD5的簽名函數對這個新的字符串進行簽名運算,從而得到32

位簽名結果字符串。此時,這個新的字符串需要與微博支付通知返回參數中的參數sign的值

進行驗證是否相等,來判斷簽名是否驗證通過。

?

10 問題

10.1??授權不成功問題

10.1.1??包名和簽名沒有在我們的API官網注冊或者注冊了不匹配。

10.1.2 用來分享的第三方app一定要是正式打包并且簽名的app ,不能使用debug版本進行授權

10.1.3 手機時間一定要是準確時間,不然會網絡請求出錯。

其他的問題 參看:

?

https://github.com/sinaweibosdk/weibo_android_sdk/blob/master/%E5%B8%B8%E8%A7%81%E9%97%AE%E9%A2%98%20FAQ.md

?

?

10.2 如何實現(xiàn)LinkCard效果?

6.2.1(3)中分享視頻所示效果是LinkCard效果,如下圖左所示。分享普通鏈接是沒有這種效果的。如果你想要你分享出去的內容展示成 LinkCard 的樣子,其前提條件是你分享的鏈接支持 LinkCard。即LinkCard 的分享開關,是基于分享出來的鏈接的域名。打個比方,開啟v.youku.com 的 LinkCard 開關,從而發(fā)布器中帶這個鏈接的,都能呈現(xiàn)為 LinkCard,該功能并不是針對于某個特定的應用,而是針對于特殊的網內容的。 如果某個網站需要進行 LinkCard 商務合作,請聯(lián)系 BD。詳情請閱讀:移動客戶端接入http://t.cn/aex4JF

?

10.3如何實現(xiàn)附件欄集成分享?

關于第三方應用注冊到微博客戶端效果,如下圖右所示:

如果優(yōu)質的第三方應用也想被顯示在此處,也需要進行商務合作,默認情況下是不被顯示在此處的。詳情請閱讀:移動客戶端接入http://t.cn/aex4JF

注意:如果沒有進行過商務合作,是無法進行該分享的。

?


10.4 第三方如何申請接口權限?

請參考:http://open.weibo.com/wiki/好友邀請

具體實現(xiàn)步驟:

1)????申請好友邀請接口使用權限,通過郵件 open_api@sina.com 申請,需要詳細描述應用的功能、服務等信息。

2)????在OAuth2的Scope域中添加好友邀請權限,主要是在demo工程的 Constants類的SCOPE變量添加“invitation_write”值。

3)????獲取互粉好友,調用friendships/friends/bilateral接口,獲取當前用戶微博互粉好友列表Uid。

4)????發(fā)送邀請,調用messages/invite接口實現(xiàn)向指定好友發(fā)送邀請。

?

?

11 第三方App 微博下載合作接口

目前3.0.0以后的版本中提供了接口,可以將通過微博渠道下載的 第三方客戶的 app? 激活的時候告訴微博后臺的接口:

?

激活方法? Utility. getAid(Context context, StringappKey);//參數:? 應用程序上下文和 app的 key 即可。

?

此方法為異步網絡請求接口,不需要等待網絡返回,初次調用應該返回null 。

此為正常狀態(tài)。

?

12 游戲接入

? 為了方便游戲廠商接入微博平臺,進行游戲推廣和? 微博游戲好友好友互動,

我們這里提供了微博平臺游戲接口的接入。詳細參見com.sina.weibo.demo工程下面的

WBGameActivity ?調用示例。

?

12.1? 游戲成就對象?? 入庫/更新?? (游戲的成就級別后臺錄入接口)

????????? /***

?????????? *???游戲成就對象入庫?接口? 1

?????????? * @param context

?????????? * @paramaccess_token????????第三方的登錄token

?????????? * @paramsource??????????????第三方的 appKey

?????????? * @paramachievement_id??????游戲成就id

?????????? * @paramgame_id?????????????游戲id

?????????? * @paramtitle???????????????成就標題名

?????????? * @paramimageUrl? string????圖像url信息,圖片大小200*200像素,

支持PNGJPEG、JPG?需要? urlencode處理

?????????? * @paramdescription?????????游戲成就描述信息

?????????? * @paramgame_point?? string?游戲取得的點數

?????????? * @paramAchievementTypeUrl??成就類型url地址信息,需要?urlencode處理

?????????? * @paramcreate_time? string?初次入庫的時間???add添加不需要傳入,?

?????? update需要傳入(如果有)yyyy-MM-dd HH:mm:ss

?????????? * @return

??????????*/? ?

?

GameManager.AddOrUpdateGameAchievement(WBGameActivity.this,params);

?

?

12.2? 用戶獲得游戲成就關系入庫? (玩家的每次升級的錄入接口)??

??????? /***? 接口2

???????? *?用戶獲得游戲成就關系入庫

???????? * @param context

???????? * @param access_token????????第三方的登錄token

???????? * @param source??????????????第三方的 appKey

???????? * @param achievement_id??????戲成就id

???????? * @param uid??????????????????用戶id

???????? * @param create_time? string?初次入庫的時間??? add?添加不需要傳入,??

update需要傳入(如果有)yyyy-MM-dd HH:mm:ss

???????? * @return

????????*/

?

?

GameManager.addOrUpdateGameAchievementRelation(WBGameActivity.this,params);

?

?

12.3? 用戶游戲得分關系入庫/更新 ??每次玩家得分紀錄接口

??????? /**????

??????????????? 必選?類型? 說明

??????????source? true???? string?申請應用時分配的AppKey

??????????game_id? true??? string?游戲id

??????????user_id? true??? string?用戶id

?????????? score??? true???string? 用戶得分

??????? */

?

GameManager.addOrUpdateAchievementScore(WBGameActivity.this,token,? Constants.APP_KEY, "", "","");

?

12.4? 讀取某個玩家游戲分數?

??????? /***

???????? * @param context

???????? * @param access_token

???????? * @param appKey?參數說明同上

???????? * @param game_id?游戲id

???????? * @param user_id?玩家的微博uid

???????? * @return

????????*/

?

?

GameManager.readPlayerScoreInfo(WBGameActivity.this,token, Constants.APP_KEY, " game_id ", " user_id ");

?

?

?

?

?

?

?

12.5 讀取玩家? 好友的游戲分數

??????? /**? 讀取玩家互粉好友?游戲分數

??????????? source? true???string? 申請應用時分配的AppKey

??????????? game_id? true???string? 游戲id

??????????? uid? true???string?用戶id

??? */

?

GameManager.readPlayerFriendsScoreInfo(WBGameActivity.this,token, Constants.APP_KEY, "23e260e9", "3164868113");

?

?

12.6 讀取玩家游戲分數? 接口

?? ????????/***? 讀取玩家獲取成就列表

??????????? source true??? string?申請應用時分配的AppKey

??????????? game_id? true???string? 游戲id

??????????? user_id? true???string? 用戶id

???????? */

GameManager.readPlayerFriendsScoreInfo(WBGameActivity.this,token, Constants.APP_KEY, "23e260e9", "3164868113");

?

?

12.7 邀請好友列表 h5 ?接口

目前先展示一個手機屏幕(大約5個好友,支持按昵稱搜索)

?

manager.invatationWeiboFriendsByList(WBGameActivity.this, token, Constants.APP_KEY,"邀請好友",ls);

?

?

?

?

12.8 ?好友邀請單頁 h5 接口

?

這個接口傳入的 uid只支持好友的uid 最多為五個;傳入的多了也以前五個為準。

anager.invatationWeiboFriendsInOnePage(WBGameActivity.this,token, Constants.APP_KEY,"邀請好友",ls,userIdList);

?

?

?

(全文完畢)

?

?

總結

以上是生活随笔為你收集整理的微博Android平台SDK文档的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。