Android社交登入授權、分享SDK,支援微信、微博和QQ

codeceo發表於2015-11-26

社交登入授權,分享SDK
支援微信、微博、QQ登入授權
微信好友、微信朋友圈、微博、QQ好友、QQ空間分享

Gradle

compile 'com.elbbbird.android:socialsdk:0.2.0@aar'

使用指南

Debug模式

SocialSDK.setDebugMode(true); //預設false

平臺SSO授權功能

ISocialOauthCallback授權回撥介面

授權結果回撥

SDK使用了Otto作為事件庫,用以元件通訊。(其實我是不想寫startActivityForResult …)
在呼叫SocialSDK.oauth()介面Activity的onCreate()方法內新增

BusProvider.getInstance().register(this);

在該Activity的onDestroy()方法新增

@Override
protected void onDestroy() {
    BusProvider.getInstance().unregister(this);
    super.onDestroy();
}

新增回撥介面

@Subscribe
public void onOauthResult(BusEvent event) {
    switch (event.getType()) {
        case BusEvent.TYPE_GET_TOKEN:
            SocialToken token = event.getToken();
            Log.i(TAG, "onOauthResult#BusEvent.TYPE_GET_TOKEN " + token.toString());
            break;
        case BusEvent.TYPE_GET_USER:
            SocialUser user = event.getUser();
            Log.i(TAG, "onOauthResult#BusEvent.TYPE_GET_USER " + user.toString());
            break;
        case BusEvent.TYPE_FAILURE:
            Exception e = event.getException();
            Log.i(TAG, "onOauthResult#BusEvent.TYPE_FAILURE " + e.toString());
            break;
        case BusEvent.TYPE_CANCEL:
            Log.i(TAG, "onOauthResult#BusEvent.TYPE_CANCEL");
            break;
    }
}

微博授權

配置微博後臺回撥地址

SDK的預設回撥地址為http://www.sina.com,需要在微博後臺配置,否則會提示回撥地址錯誤。
如果在SocialSDK.initWeibo()方法自定義了回撥地址,需要在後臺配置為相應地址。

oauth

SocialSDK.initWeibo("app_key"); SocialSDK.oauthWeibo(context);

onActivityResult

SocialSDK.oauthWeiboCallback(context, requestCode, resultCode, data);

revoke

SocialSDK.revokeWeibo(context);

微信授權

WXEntryActivity

建立包名:package_name.wxapi
在該包名下建立類WXEntryActivity繼承自WXCallbackActivity

package com.encore.actionnow.wxapi; public class WXEntryActivity extends WXCallbackActivity {

}

AndroidManifest.xml

<activity
    android:name=".wxapi.WXEntryActivity"
    android:configChanges="keyboardHidden|orientation|screenSize"
    android:exported="true"
    android:screenOrientation="portrait"
    android:theme="@android:style/Theme.Translucent.NoTitleBar" />

oauth

SocialSDK.initWeChat("app_id", "app_secret"); SocialSDK.oauthWeChat(context);

revoke

SocialSDK.revokeWeChat(context);

QQ授權

AndroidManifest.xml

<activity
    android:name=".wxapi.WXEntryActivity"
    android:configChanges="keyboardHidden|orientation|screenSize"
    android:exported="true"
    android:screenOrientation="portrait"
    android:theme="@android:style/Theme.Translucent.NoTitleBar" />

以上配置中的XXXXXXXXX換成app_id.

oauth

SocialSDK.initQQ(app_id); SocialSDK.oauthQQ(context);

onActivityResult

if (requestCode == Constants.REQUEST_LOGIN || requestCode == Constants.REQUEST_APPBAR) {
    SocialSDK.oauthQQCallback(requestCode, resultCode, data);
}

revoke

SocialSDK.revokeQQ(context);

SDK預設授權介面,展示全平臺授權介面

配置微博後臺回撥地址

SDK的預設回撥地址為http://www.sina.com,需要在微博後臺配置,否則會提示回撥地址錯誤。
如果在SocialSDK.init()方法自定義了回撥地址,需要在後臺配置為相應地址。

WXEntryActivity

建立包名:package_name.wxapi
在該包名下建立類WXEntryActivity繼承自WXCallbackActivity

package com.encore.actionnow.wxapi; public class WXEntryActivity extends WXCallbackActivity {

}

AndroidManifest.xml

<activity android:name=".wxapi.WXEntryActivity" android:configChanges="keyboardHidden|orientation|screenSize" android:exported="true" android:screenOrientation="portrait" android:theme="@android:style/Theme.Translucent.NoTitleBar" />
<activity android:name="com.tencent.tauth.AuthActivity" android:launchMode="singleTask" android:noHistory="true">
    <intent-filter>
        <action android:name="android.intent.action.VIEW" />

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

        <data android:scheme="tencentXXXXXXXXX" />
    </intent-filter>
</activity>

以上配置中的XXXXXXXXX換成app_id.

oauth

SocialSDK.init("wechat_app_id", "wechat_app_secret", "weibo_app_id", "qq_app_id"); SocialSDK.oauth(context);

revoke

SocialSDK.revoke(context);

FAQ

關於三個平臺的賬號

微博應用程式註冊完成後,需要在後臺配置測試賬號,包名,簽名資訊,然後開始測試;
微信應用程式註冊後,需要配置包名和簽名,並提交稽核通過,可以獲得分享許可權。SSO登入許可權需要開發者認證。(保護費不到位,測試都不能做)

QQ需要在後臺配置測試賬號才能SSO登入。

是否需要配置許可權?

SDK已經在aar中新增三個平臺需要的許可權,以下

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

相關文章