目前大多数APP都包含了第三方平台的登录,特别是QQ和微信,这篇博客主要讲的是如何实现QQ第三方平台实现QQ登录和分享功能,功能包含:
- 登录授权登录获取用户信息(昵称,头像,地址等)
- QQ分享给好友
- QQ分享到空间
先看看效果图:
要实现以上功能,首先得去腾讯开放平台 注册成为开发者,然后创建应用,得到 APPID,如下图:

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

创建成功后,取得APP ID即可,完成以上功能了。
添加这两个jar包

1 public static Tencent mTencent; 2 public static String mAppid="申请的APPID"; 3 4 if (mTencent == null) { 5 mTencent = Tencent.createInstance(mAppid, this); 6 } 7 8 /** 9 * 继承的到BaseUiListener得到doComplete()的方法信息 10 */ 11 IUiListener loginListener = new BaseUiListener() { 12 @Override 13 protected void doComplete(JSONObject values) {//得到用户的ID 和签名等信息 用来得到用户信息 14 Log.i("lkei",values.toString()); 15 initOpenidAndToken(values); 16 updateUserInfo(); 17 } 18 }; 19 20 //qq分享 21 private void onClickShare() { 22 final Bundle params = new Bundle(); 23 params.putInt(QQShare.SHARE_TO_QQ_KEY_TYPE, 24 QQShare.SHARE_TO_QQ_TYPE_DEFAULT); 25 params.putString(QQShare.SHARE_TO_QQ_TITLE, "要分享的标题"); 26 params.putString(QQShare.SHARE_TO_QQ_SUMMARY, "要分享的摘要"); 27 params.putString(QQShare.SHARE_TO_QQ_TARGET_URL, 28 "http://blog.csdn.net/DickyQie/article/list/1"); 29 params.putString(QQShare.SHARE_TO_QQ_IMAGE_URL, 30 "http://imgcache.qq.com/qzone/space_item/pre/0/66768.gif"); 31 params.putString(QQShare.SHARE_TO_QQ_APP_NAME, "切切歆语"); 32 params.putString(QQShare.SHARE_TO_QQ_EXT_INT, "其他附加功能"); 33 mTencent.shareToQQ(MainActivity.this, params, new BaseUiListener1()); 34 } 35 36 private void shareToQQzone() { 37 try { 38 final Bundle params = new Bundle(); 39 params.putInt(QzoneShare.SHARE_TO_QZONE_KEY_TYPE, 40 QzoneShare.SHARE_TO_QZONE_TYPE_IMAGE_TEXT); 41 params.putString(QzoneShare.SHARE_TO_QQ_TITLE, "切切歆语"); 42 params.putString(QzoneShare.SHARE_TO_QQ_SUMMARY, "sss"); 43 params.putString(QzoneShare.SHARE_TO_QQ_TARGET_URL, 44 "http://blog.csdn.net/DickyQie/article/list/1"); 45 ArrayList<String> imageUrls = new ArrayList<String>(); 46 imageUrls.add("http://media-cdn.tripadvisor.com/media/photo-s/01/3e/05/40/the-sandbar-that-links.jpg"); 47 params.putStringArrayList(QzoneShare.SHARE_TO_QQ_IMAGE_URL, imageUrls); 48 params.putInt(QzoneShare.SHARE_TO_QQ_EXT_INT, 49 QQShare.SHARE_TO_QQ_FLAG_QZONE_AUTO_OPEN); 50 Tencent mTencent = Tencent.createInstance("申请的APPID", 51 MainActivity.this); 52 mTencent.shareToQzone(MainActivity.this, params, 53 new BaseUiListener1()); 54 } catch (Exception e) { 55 } 56 }
在AndroidManifest.xml中
application 下:
1 <activity 2 android:name="com.tencent.open.yyb.AppbarActivity" 3 android:configChanges="orientation|keyboardHidden" 4 android:screenOrientation="portrait" 5 android:theme="@android:style/Theme.Translucent.NoTitleBar" /> 6 <activity android:name="com.tencent.connect.avatar.ImageActivity" /> 7 <activity 8 android:name="com.tencent.connect.common.AssistActivity" 9 android:configChanges="orientation|keyboardHidden" 10 android:screenOrientation="behind" 11 android:theme="@android:style/Theme.Translucent.NoTitleBar" /> 12 <activity 13 android:name="com.tencent.tauth.AuthActivity" 14 android:launchMode="singleTask" 15 android:noHistory="true" > 16 <intent-filter> 17 <action android:name="android.intent.action.VIEW" /> 18 <category android:name="android.intent.category.DEFAULT" /> 19 <category android:name="android.intent.category.BROWSABLE" /> 20 <data android:scheme="tencent1106062414" /> 21 <!--应用的AppId要相同--> 22 </intent-filter> 23 </activity>
添加权限
1 <uses-permission android:name="android.permission.INTERNET" /> 2 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 3 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 4 <!-- SDK2.1新增获取用户位置信息 --> 5 <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 6 <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 7 <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" /> 8 <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> 9 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 10 <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 11 <uses-permission android:name="android.permission.READ_PHONE_STATE" /> 12 <uses-permission android:name="android.permission.GET_TASKS"/>
源码有点多就不一一贴出来了,直接下载源码即可,其他功能可以参考腾讯开放平台的文档。