快速內建分享
目的:使用shareSDK實作快捷分享。
效果圖:

步驟:
官方文檔:
ShareSDK for Studio 快速內建
第一步:注冊ShareSDK應用擷取ShareSDK的appkey
第二步:下載下傳ShareSDK
第三步:利用快速內建工具生成所需要的內建檔案
第四步:将生成的檔案內建到自己的項目
第五步:配置清單檔案
第六步:申請配置第三方平台的key
第七步:初始化ShareSDK
第八步:調用onekeyshare的界面分享
各平台位址及申請流程官方文檔
ShareSDK各社交平台申請APPkey 的網址及申請流程彙總
常用開放平台:微網誌+微信+QQ
微網誌開放平台
QQ開放平台
微信開放平台
QQ互聯
常用開放平台申請流程:微網誌+微信+QQ
Android新浪微網誌開放平台申請流程
騰訊開放平台申請流程
微信開放平台申請流程
注:
[1] Email、資訊不需要注冊即可使用
[2] QQ用戶端分享和QQ空間使用相同的應用資訊配置頁面
[3] 微信好友和微信朋友圈使用相同的注冊資訊
[4] 易信好友和易信朋友圈使用相同的注冊資訊
注意:
- 初始化ShareSDK最好不要在
中進行,哪裡需要分享在哪裡初始化,可以進行多次初始化。Application
- 微網誌、QQ、QQ空間不需要稽核也可以得到
APP ID
App Key
,也就是可以分享成功;但是微信不可以,隻有稽核成功後,才會獲得App Secret
APP ID
App Secret
- 如果提示
,在“分享失敗”
中搜一下log
或者Throwable
,如果是System.err
,多半是Auth failed
APP ID
App Key
填寫錯誤,或者微網誌的回調錯了(我沒寫回調分享也成功了)App Secret
報錯
原因:
解決方法:
在
module
的
android
節點下添加一下代碼
android {
...
defaultConfig {
...
}
buildTypes {
...
}
lintOptions{
checkReleaseBuilds false
abortOnError false
}
}
登陸
前面的配置和分享一樣。
點選“QQ登陸”,實作qq登陸
點選“微網誌登陸”,失敗,應該是沒有稽核通過,無法采用微網誌登陸,不确定原因。
微信登陸需要稽核引用。
效果圖
QQ登陸
QQ、微信、微網誌登陸代碼都是一樣的,
Platform qq = ShareSDK.getPlatform(QQ.NAME);
qq.SSOSetting(false); //設定false表示使用SSO授權方式
qq.setPlatformActionListener(new PlatformActionListener() { // 設定分享事件回調
@Override
public void onComplete(Platform platform, int action, HashMap<String, Object> hashMap) {
//輸出所有授權資訊
platform.getDb().exportData();
//周遊Map
Iterator ite = hashMap.entrySet().iterator();
while (ite.hasNext()) {
Map.Entry entry = (Map.Entry) ite.next();
Object key = entry.getKey();
Object value = entry.getValue();
Logger.d("QQ---" + key + ": " + value);
}
Logger.d("hashMap=" + hashMap);
startActivity(new Intent(MainActivity.this, Activity_B.class));
}
@Override
public void onError(Platform platform, int i, Throwable throwable) {
Logger.d("onError--throwable=" + throwable.getMessage());
}
@Override
public void onCancel(Platform platform, int i) {
Logger.d("onCancel");
}
});
qq.authorize();//單獨授權
qq.showUser(null);//授權并擷取使用者資訊
擷取平台資料庫的使用者資訊(此方法統一各個第三方平台擷取資料資訊的接口)
if (action == Platform.ACTION_USER_INFOR) {
PlatformDb platDB = platform.getDb();//擷取數平台資料DB
//通過DB擷取各種資料
platDB.getToken();
platDB.getUserGender();
platDB.getUserIcon();
platDB.getUserId();
platDB.getUserName();
Logger.d("name=" + platDB.getUserName() + "token=" + platDB.getToken() + "gender=" + platDB.getUserGender() + "userIcon=" + platDB.getUserIcon() + "UserId=" + platDB.getUserId());
}
注意
- QQ登陸需要在QQ互聯上面注冊,測試的話:走完第一步(資料填寫)就可以了;正式的話:應該走完全部的3步吧(沒測試)。