Android之第三方平台实现QQ登录和QQ分享

来源:互联网 发布:企业网络分层设计原则 编辑:程序博客网 时间:2024/05/01 11:40

目前大多数APP都包含了第三方平台的登录,特别是QQ和微信,这篇博客主要讲的是如何实现QQ第三方平台实现QQ登录和分享功能,功能包含:

  • 登录授权登录获取用户信息(昵称,头像,地址等)
  • QQ分享给好友
  • QQ分享到空间

先看看效果图:

 

            

要实现以上功能,首先得去腾讯开放平台 注册成为开发者,然后创建应用,得到 APPID,如下图:

名称就是APP名称,可上传Logo图片,授权登录时会显示授权给那个APP,效果如图:

      

创建成功后,取得APP ID即可,完成以上功能了。

添加这两个jar包

复制代码
 public static Tencent mTencent; public static String mAppid="申请的APPID"; if (mTencent == null) {     mTencent = Tencent.createInstance(mAppid, this); }
复制代码
复制代码
  /**     * 继承的到BaseUiListener得到doComplete()的方法信息     */    IUiListener loginListener = new BaseUiListener() {        @Override        protected void doComplete(JSONObject values) {//得到用户的ID  和签名等信息  用来得到用户信息            Log.i("lkei",values.toString());            initOpenidAndToken(values);            updateUserInfo();        }    };
复制代码

 

复制代码
    //qq分享    private void onClickShare() {        final Bundle params = new Bundle();        params.putInt(QQShare.SHARE_TO_QQ_KEY_TYPE,                QQShare.SHARE_TO_QQ_TYPE_DEFAULT);        params.putString(QQShare.SHARE_TO_QQ_TITLE, "要分享的标题");        params.putString(QQShare.SHARE_TO_QQ_SUMMARY, "要分享的摘要");        params.putString(QQShare.SHARE_TO_QQ_TARGET_URL,                "http://blog.csdn.net/DickyQie/article/list/1");        params.putString(QQShare.SHARE_TO_QQ_IMAGE_URL,                "http://imgcache.qq.com/qzone/space_item/pre/0/66768.gif");        params.putString(QQShare.SHARE_TO_QQ_APP_NAME, "切切歆语");        params.putString(QQShare.SHARE_TO_QQ_EXT_INT, "其他附加功能");        mTencent.shareToQQ(MainActivity.this, params, new BaseUiListener1());    }
复制代码
复制代码
  private void shareToQQzone() {        try {            final Bundle params = new Bundle();            params.putInt(QzoneShare.SHARE_TO_QZONE_KEY_TYPE,                    QzoneShare.SHARE_TO_QZONE_TYPE_IMAGE_TEXT);            params.putString(QzoneShare.SHARE_TO_QQ_TITLE, "切切歆语");            params.putString(QzoneShare.SHARE_TO_QQ_SUMMARY, "sss");            params.putString(QzoneShare.SHARE_TO_QQ_TARGET_URL,                    "http://blog.csdn.net/DickyQie/article/list/1");            ArrayList<String> imageUrls = new ArrayList<String>();            imageUrls.add("http://media-cdn.tripadvisor.com/media/photo-s/01/3e/05/40/the-sandbar-that-links.jpg");            params.putStringArrayList(QzoneShare.SHARE_TO_QQ_IMAGE_URL, imageUrls);            params.putInt(QzoneShare.SHARE_TO_QQ_EXT_INT,                    QQShare.SHARE_TO_QQ_FLAG_QZONE_AUTO_OPEN);            Tencent mTencent = Tencent.createInstance("申请的APPID",                    MainActivity.this);            mTencent.shareToQzone(MainActivity.this, params,                    new BaseUiListener1());        } catch (Exception e) {        }    }
复制代码

在AndroidManifest.xml中

application 下:

复制代码
  <activity            android:name="com.tencent.open.yyb.AppbarActivity"            android:configChanges="orientation|keyboardHidden"            android:screenOrientation="portrait"            android:theme="@android:style/Theme.Translucent.NoTitleBar" />        <activity android:name="com.tencent.connect.avatar.ImageActivity" />        <activity            android:name="com.tencent.connect.common.AssistActivity"            android:configChanges="orientation|keyboardHidden"            android:screenOrientation="behind"            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="tencent1106062414" />                <!--应用的AppId要相同-->            </intent-filter>        </activity>
复制代码

添加权限

复制代码
 <uses-permission android:name="android.permission.INTERNET" />    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />    <!-- SDK2.1新增获取用户位置信息 -->    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />    <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />    <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.GET_TASKS"/>
复制代码

源码有点多就不一一贴出来了,直接下载源码即可,其他功能可以参考腾讯开放平台的文档。

源码点击下载

原创粉丝点击