QQ ,微博,一鍵分享的步驟,詳細到沒朋友

以微博和QQ爲例
QQ:

在此之前需要先註冊開發者信息。並生成appId

 打開騰訊開發平臺(http://open.qq.com);

點擊移動應用;




進入應用管理






點擊管理應用,找到自己之前創建的Demo




進入Demo 看到Demo 的信息記錄下來
創建的時間;
appId:
appkey:




再  創建並登陸http://www.mob.com   進入後臺



點擊ShareSDK   ShareSDK For Android下載並創建 好應用   
選擇 上方的添加,進入看到App key






下載ShareSdk
選擇需要的項目(最好全選)
解壓得到三個包





選擇 ShareSDK for Android 找到 QuickIntegrater  這個包




打開控制檯  輸入java -jar 空格    QuickIntegrater  這個包的路徑


得到彈窗





輸入項目的名稱  和包名  最好從清單文件中獲取
 勾選繼承快捷分享,方便做一鍵分享的操作,點擊確定,在ShareSDK for Android 包中會生成一個Simple 文件,裏面有四個文件



然後將assets 整個文件一起復制到 main 包下和java 同級
將src 目錄下的 cn  和com  兩個包拷貝到java的目錄下


將libs 文件拷貝到libs 中並add  as Library

將res muluxia 的六個文件都拷貝到res 目錄下,做好了這些工作開始在代碼中進行調試

進入ShareSDK.xml 文件當中
找到


<ShareSDK     AppKey = "********8***"/> 
選擇
<QQ
        Id="7"
        SortId="7"
        AppId="輸入自己之前創建項目的appid"
        AppKey="輸入自己之前創建項目的appid"
        ShareByAppClient="true"
        Enable="true" />
在代碼中創建一個方法  :

 private void loginByShareQQ() {
        //用ShareSDK登錄或者分享之前,必須初始化
        ShareSDK.initSDK(this);
        /* 創建一個QQ平臺對象*/
        Platform qq = ShareSDK.getPlatform(QQ.NAME);


        //如果已經通過驗證了,那麼可以直接獲取QQ的相關信息
        if(qq.isValid()){
            PlatformDb db=qq.getDb();

            String userId=db.getUserId();
            String userName=db.getUserName();
            String  userIcon=db.getUserIcon();
            String userGender = db.getUserGender();

            LogUtil.w("tag","UserId="+userId+" userName="+userName+" userIcon="+userIcon +"   userGender="+userGender);
            return;

        }

   /*true 通過web認證, false 通過客戶端認證*/
        qq.SSOSetting(false);
        qq.setPlatformActionListener(new PlatformActionListener() {
            @Override
            public void onComplete(Platform platform, int i, HashMap<String, Object> hashMap) {
                LogUtil.d("tag", "登錄成功。。。");

            }

            @Override
            public void onError(Platform platform, int i, Throwable throwable) {
                LogUtil.w("tag", "登錄失敗");
            }

            @Override
            public void onCancel(Platform platform, int i) {
                LogUtil.w("tag", "取消登錄");
            }
        });
        //兩種認證方式
        //需要導入用戶的,有自己的用戶數據庫
        qq.showUser(null);
        //不需要導入用戶的,只需要一個登錄過程
        //qq.authorize();
    }
在清單文件中添加權限:

<uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.MANAGE_ACCOUNTS"/>
    <uses-permission android:name="android.permission.GET_ACCOUNTS"/>
    <!-- 藍牙分享所需的權限 -->
    <uses-permission android:name="android.permission.BLUETOOTH" />
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
在Application 中添加:

<activity
            android:name="com.tencent.connect.common.AssistActivity"
            android:configChanges="orientation|keyboardHidden|screenSize"
            android:theme="@android:style/Theme.Translucent.NoTitleBar" />
        <activity
            android:name="com.mob.tools.MobUIShell"
            android:theme="@android:style/Theme.Translucent.NoTitleBar"
            android:configChanges="keyboardHidden|orientation|screenSize"
            android:screenOrientation="portrait"
            android:windowSoftInputMode="stateHidden|adjustResize" >
            <intent-filter>
                <data android:scheme="tencentAppid"/>
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.BROWSABLE" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
            <!-- 調用新浪原生SDK,需要註冊的回調activity -->
            <intent-filter>
                <action android:name="com.sina.weibo.sdk.action.ACTION_SDK_REQ_ACTIVITY" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>

新浪微博:
進入新浪微博開發者平臺http://open.weibo.com/?sudaref=www.2doit.net:

點擊移動應用    立即接入 ——>選擇創建應用——> 完善應用的名稱
已經創建好的,在我的應用中點擊應用的名稱,點擊左邊的應用信息 



點擊編輯,通過    下載使用平臺提供的簽名工具獲取簽名下載工具就好了,輸入包名,會生成簽名
下面的* Android下載地址什麼的,只是做測試的話隨意,http://www.baidu.com,這也可以,

下面有你的App key 和 APp Secret




選擇保存

在高級信息裏面選擇
OAuth2.0 授權設置


在測試信息裏面,添加自己的微博名稱



好了這樣就差不多了

在代碼中添加這樣的方法:

  private  void  loginByShareSDK(Platform platform){
        //如果已經通過驗證了,那麼可以直接獲取platform的相關信息
        if(platform.isValid()){
            PlatformDb db=platform.getDb();
            String userId=db.getUserId();
            String userName=db.getUserName();
            String  userIcon=db.getUserIcon();
            String userGender = db.getUserGender();

            LogUtil.w("tag","UserId="+userId+" userName="+userName+" userIcon="+userIcon +"   userGender="+userGender);
            return;

        }

   /*true 通過web認證, false 通過客戶端認證*/
        platform.SSOSetting(false);
        platform.setPlatformActionListener(new PlatformActionListener() {
            @Override
            public void onComplete(Platform platform, int i, HashMap<String, Object> hashMap) {
                LogUtil.d("tag", "登錄成功。。。");

            }

            @Override
            public void onError(Platform platform, int i, Throwable throwable) {
                LogUtil.w("tag", "登錄失敗");
            }

            @Override
            public void onCancel(Platform platform, int i) {
                LogUtil.w("tag", "取消登錄");
            }
        });
        //兩種認證方式
        //需要導入用戶的,有自己的用戶數據庫
        platform.showUser(null);
        //不需要導入用戶的,只需要一個登錄過程
        //platform.authorize();
    }
我們在這個方法中添加一個監聽事件:

private View.OnClickListener onClickListener = new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            int id = v.getId();
            //用ShareSDK登錄或者分享之前,必須初始化
            ShareSDK.initSDK(LoginActivity.this);
            Platform platform=null;
            switch (id) {
                case R.id.login_qq_iv:
                    loginByShareQQ();
                    // loginByQQ();
                    platform=ShareSDK.getPlatform(QQ.NAME);
                    break;
                case R.id.login_wb_iv:
                   platform=ShareSDK.getPlatform(SinaWeibo.NAME);
                    break;
            }
            //通過ShareSDk登錄
            loginByShareSDK(platform);
        }
    };

這樣就能選擇自己的登陸方式了

下面來說一下關於一鍵分享的事:
很簡單的一段代碼:


private void showShare() {
        ShareSDK.initSDK(this);
        OnekeyShare oks = new OnekeyShare();
        //關閉sso授權
        oks.disableSSOWhenAuthorize();
        // title標題,印象筆記、郵箱、信息、微信、人人網和QQ空間使用
         oks.setTitle(getString(R.string.share));
     
        // titleUrl是標題的網絡鏈接,僅在人人網和QQ空間使用
        oks.setTitleUrl("http://url");

        // text是分享文本,所有平臺都需要這個字段
        oks.setText("第一次分享做測試分享");
        // imagePath是圖片的本地路徑,Linked-In以外的平臺都支持此參數
        //oks.setImagePath("/sdcard/test.jpg");//確保SDcard下面存在此張圖片

        // url僅在微信(包括好友和朋友圈)中使用
        //oks.setUrl("http://url");
        // comment是我對這條分享的評論,僅在人人網和QQ空間使用
        oks.setComment("我是測試評論文本");
        // site是分享此內容的網站名稱,僅在QQ空間使用
        oks.setSite(getString(R.string.app_name));
        // siteUrl是分享此內容的網站地址,僅在QQ空間使用
        oks.setSiteUrl("http://sharesdk.cn");

// 啓動分享GUI
        oks.show(this);
    }


最後直接在點擊事件中調用這個方法就好了。好了,就這些了、。。謝謝








發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章