- 注册腾讯互联开放平台帐号
- 下载SDK
- 开发阶段
- 创建并配置工程
- 创建实例及实现回调
- QQ登录
- 效果展示
- SDK以及DEMO下载地址
注册腾讯互联开放平台帐号
1. QQ互联网址 : http://connect.qq.com/,用自己的QQ号登录即可,如图中红色框1
2. 点击移动应用接入,如图中红色框2
3. 点击管理中心或移动应用进入到开发者注册界面(针对没有注册为开发者的QQ号)
4. 开发者注册,注意开发者类型不要选错了,后面要提供相应的资料
5.耐心等待审核通过,审核通过后,进入管理中心创建移动应用
点击你所创建的移动应用,可以看到APP ID,APP KEY。
下载SDK
终于可以看到下图SDK下载的地方了,不得不吐槽这个用户体验,我们这里选择下载Android SDK 最新版本的
这里我下载的是
,解压后打开
我们做QQ第三方登录,需要的准备工作就完成了。
开发阶段
创建并配置工程
1. 新建工程并导入SDK的jar文件
以下以eclipse为开发的IDE进行范例说明:
(1)创建一个工程,并把open-sdk.jar文件和mta_sdk_x.x.x.jar文件拷贝到libs(或lib)目录下,如下图所示:
(2)将open-sdk.jar加入编译路径中。
具体的操作步骤为:选中open-sdk.jar,右键菜单中选择Build Path, 选择Add to Build Path,如下图所示:
(3)将mta_sdk_x.x.x.jar加入编译路径中。
按照上面的方法,将mta_sdk_x.x.x.jar加入编译路径中。
在工程的Referenced Libraries目录下看到导入的jar包,说明已经成功将jar包加入build path,如下图所示:
2. 配置AndroidManifest
在应用的AndroidManifest.xml增加配置的节点下增加以下配置(注:不配置将会导致无法调用API);
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<application>
<activity
android:name="com.tencent.tauth.AuthActivity"
android:noHistory="true"
android:launchMode="singleTask" >
<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="tencent你的AppId" />
</intent-filter>
</activity>
<activity android:name="com.tencent.connect.common.AssistActivity"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:configChanges="orientation|keyboardHidden|screenSize"
/>
<application>
创建实例及实现回调
- 创建实例 Tencent是SDK的功能入口,所有的接口调用都得通过Tencent进行调用。因此,调用SDK,首先需要创建一个Tencent实例,其代码如下:
1. @Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Tencent类是SDK的主要实现类,开发者可通过Tencent类访问腾讯开放的OpenAPI。
// 其中APP_ID是分配给第三方应用的appid,类型为String。
mTencent = Tencent.createInstance(APP_ID, this.getApplicationContext());
// 1.4版本:此处需新增参数,传入应用程序的全局context,可通过activity的getApplicationContext方法获取
// 初始化视图
initViews();
}
其中,如果你已经添加了”android.permission.INTERNET”和”android.permission.ACCESS_NETWORK_STATE”权限,则无需重复添加。
而”你的AppId”则要替换成具体应用的AppId,例如你的AppId是”222222″,则标签应该是这样的:
< data android:scheme=”tencent222222”/>
- 实现回调
所有的SDK接口调用,都会传入一个回调,用以接收SDK返回的调用结果。回调的主要接口有两种:
2.1 实现回调 IUiListener
调用SDK已经封装好的接口时,例如:登录、快速支付登录、应用分享、应用邀请等接口,需传入该回调的实例。
IUiListener的实现示例代码如下:
1. private class BaseUiListener implements IUiListener {
@Override
public void onComplete(JSONObject response) {
mBaseMessageText.setText(“onComplete:”);
mMessageText.setText(response.toString());
doComplete(response);
}
protected void doComplete(JSONObject values) {
}
@Override
public void onError(UiError e) {
showResult(“onError:”, “code:” + e.errorCode + “, msg:”• e.errorMessage + “, detail:” + e.errorDetail);
}
@Override
public void onCancel() {
showResult(“onCancel”, “”);
}
}
- 特别注意 应用调用Andriod_SDK接口时,如果要成功接收到回调,需要在调用接口的Activity的onActivityResult方法中增加如下代码:
2. @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
mTencent.onActivityResult(requestCode, resultCode, data);
}
QQ登录
QQ登录示例代码:
代码中的listener是IUiListener的一个实例。
public void login()
{
mTencent = Tencent.createInstance(AppId, this.getApplicationContext());
if (!mTencent.isSessionValid())
{
mTencent.login(this, Scope, listener);
}
}
效果展示
如果用户手机上安装了最新版本的手机QQ或手机QZone,将会调用相应的客户端,通过SSO方式进行登录。此方式可以避免用户多次输入用户名和密码,提升用户的登录体验。
如果用户手机上没有安装任何支持SSO登录的客户端,SDK将会调用系统浏览器,打开登录页面。用户在网页中输入输入用户名和密码后可以完成授权。
授权完成后,界面会自动返回应用界面。用户在应用中进行后续操作。
登录成功后调用public void onComplete(JSONObject arg0) 回传的JsonObject, 其中包含OpenId, AccessToken等重要数据。
{
"ret":0,
"pay_token":"xxxxxxxxxxxxxxxx",
"pf":"openmobile_android",
"expires_in":"7776000",
"openid":"xxxxxxxxxxxxxxxxxxx",
"pfkey":"xxxxxxxxxxxxxxxxxxx",
"msg":"sucess",
"access_token":"xxxxxxxxxxxxxxxxxxxxx"
}
SDK以及DEMO下载地址
Android_SDK_V2.9.3
http://wiki.open.qq.com/wiki/mobile/SDK%E4%B8%8B%E8%BD%BD