天天看點

第三方SDK:ShareSDK 快捷分享 + 登陸快速內建分享登陸

快速內建分享

目的:使用shareSDK實作快捷分享。

效果圖:

第三方SDK:ShareSDK 快捷分享 + 登陸快速內建分享登陸
第三方SDK: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

    填寫錯誤,或者微網誌的回調錯了(我沒寫回調分享也成功了)

報錯

原因:

第三方SDK:ShareSDK 快捷分享 + 登陸快速內建分享登陸

解決方法:

module

android

節點下添加一下代碼

第三方SDK:ShareSDK 快捷分享 + 登陸快速內建分享登陸
android {
    ...
    defaultConfig {
    ...
    }
    buildTypes {
    ...
    }
    lintOptions{
        checkReleaseBuilds false
        abortOnError false
    }
}
           

登陸

前面的配置和分享一樣。

點選“QQ登陸”,實作qq登陸

點選“微網誌登陸”,失敗,應該是沒有稽核通過,無法采用微網誌登陸,不确定原因。

微信登陸需要稽核引用。

效果圖

第三方SDK:ShareSDK 快捷分享 + 登陸快速內建分享登陸

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步吧(沒測試)。
第三方SDK:ShareSDK 快捷分享 + 登陸快速內建分享登陸