• 注册腾讯互联开放平台帐号
    • 下载SDK
    • 开发阶段
      • 创建并配置工程
      • 创建实例及实现回调
      • QQ登录
      • 效果展示
    • SDK以及DEMO下载地址

注册腾讯互联开放平台帐号

1. QQ互联网址 : http://connect.qq/,用自己的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.connectmon.AssistActivity"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:configChanges="orientation|keyboardHidden|screenSize" 
/>

<application>

创建实例及实现回调

  1. 创建实例
    Tencent是SDK的功能入口,所有的接口调用都得通过Tencent进行调用。因此,调用SDK,首先需要创建一个Tencent实例,其代码如下:
    @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”/>

  1. 实现回调
    所有的SDK接口调用,都会传入一个回调,用以接收SDK返回的调用结果。回调的主要接口有两种:
    2.1 实现回调 IUiListener
    调用SDK已经封装好的接口时,例如:登录、快速支付登录、应用分享、应用邀请等接口,需传入该回调的实例。
    IUiListener的实现示例代码如下:

    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”, “”);
      }
      }
  2. 特别注意
    应用调用Andriod_SDK接口时,如果要成功接收到回调,需要在调用接口的Activity的onActivityResult方法中增加如下代码:

    @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/wiki/mobile/SDK%E4%B8%8B%E8%BD%BD