admin管理员组

文章数量:1531660

2024年1月7日发(作者:)

【QQ登录】Android_SDK使用说明

QQ登录Android SDK以Jar包形式提供,封装了QQ登录的登录授权以及大部分OpenAPI,应用只需要修改少量代码,不需要理解验证授权流程,即可快速实现QQ登录功能。

Android平台上的应用,请在申请appid,appkey后,使用QQ互联提供的Android SDK。

注意:

1. QQ登录Android SDK支持的Android版本:2.1及以上版本。

2. 支持的第三方浏览器:Android系统自带浏览器,Firefox,Opera Mobile。

3. 支持web view与浏览器两种方式,即支持跳转到手机浏览器上进行QQ登录与验证流程,开发者可在SDK包中选择浏览器模式即可,但浏览器方式用户跳跃较大,不建议使用。

4. 仅适用于移动应用,即基于【QQ登录】使用Implicit_Grant方式获取Access_Token接入的应用。

目录

[隐藏]

1. Android SDK 下载

2. 创建工程及引用SDK源码文件

3. 修改必要的代码

3.1 使用SDK提供的按钮样式

3.2 获取access token

3.3 获取OpenID

4. 调用OpenAPI

附录:Android SDK主要类说明

1. Android SDK 下载

请到【QQ登录】SDK下载页面下载QQ登录Android SDK。

2. 创建工程及引用SDK源码文件

以下以eclipse为开发的IDE进行范例说明:

1. 创建一个工程,并把 tencent_ 放到lib中,如下图所示:

2. 将tencent_加入编译路径中。

具体的操作步骤为:选中tencent_ ,右键菜单中选择Build Path,选择Add to Build Path,如下图所示:

看到类似以下的样子,说明已经成功将jar包加入build path :

3. 修改必要的代码

3.1 使用SDK提供的按钮样式

SDK提供了大中小3种登录按钮,开发者可以在代码中设置按钮样式。

示例代码如下(在SDK包中的位置: )

ImageViewloginBtn = (ImageView) findViewById();

//大按钮

geDrawable(LoginBtn(getAssets()));

//中按钮

//geDrawable(inBtn(getAssets()));

//小按钮

//geDrawable(llLoginBtn(getAssets()));

3.2 获取access token

(1)获取Access token 需要访问网络,所以需要修改,加入以下代码:

(2)处理登录页面的打开方式在这个类中。需要以ra的方式传入如下参数:

参数 是否必须 含义

client_id 必须 申请QQ登录成功后,分配给应用的appid。

请求用户授权时向用户显示的可进行授权的列表。

可填写的值是【QQ登录】API文档中列出的接口,以及一些动作型的授权(目前仅有:doscope 可选

如果要填写多个接口名称,请用逗号隔开。

例如:scope=get_user_info,list_album,upload_pic,do_like

不传则默认请求对接口get_user_info进行授权。

建议控制授权项的数量,只传入必要的接口名称,因为授权项越多,用户越可能拒绝进行target 必须

打开登录页面的方式:“_slef”以webview方式打开; "_blank"以的浏览器方式打开。

成功授权后的回调地址。

必须与注册时填写的回调地址一致,用来进行第三方应用的身份验证。

不能包含特殊字符“#”;

callback 可选

不能是浏览器能识别的协议(如:);

不区分大小写,在设置的scheme必须是小写;

不传则默认为;

如果设置了,请注意与里的值一致

下面是打开登录授权页面的示例代码(在SDK包中的位置: )

private void auth(String clientId, String target)

{

// 使用WebView打开

Intent intent = new Intent(,

);

ra(_ID, clientId);

ra(, scope);

ra(, target);

ra(CK, CALLBACK);

startActivity(intent);

}

(3)成功授权后会以广播的形式把相应的access token,expires_in的值广播,需要写一个接收器来接收

相关的数值。

示例代码如下(在SDK包中的位置: )

public class AuthReceiver extends BroadcastReceiver

{

private static final String TAG="AuthReceiver";

@Override

public void onReceive(Context context, Intent intent)

{

Bundle exts = ras();

String raw = ing("raw");

String access_token = ing("access_token");

String expires_in = ing("expires_in");

Log.i(TAG, ("raw: %s, access_token:%s, expires_in:%s", raw, access_token,

expires_in));

if (access_token != null)

{

//获取到access token

mAccessToken = access_token;

((TextView)findViewById(_token)).setText(access_token);

("正在获取", getApplicationContext());

//用access token 来获取open id

(access_token, new OpenIDListener());

}

}

}

特别提示:

获取到的access token具有3个月有效期,网站需实现防过期策略,并在过期后提示用户再次授权。

第三方网站可存储access token信息,以便后续调用OpenAPI访问和修改用户信息时使用。

3.3 获取OpenID

获取到access token后,就可以依据access token 来获取相应的openid:

//用access token 来获取openid

(access_token, new Callback());

所有的开发接口的调用都通过TencentOpenAPI类来代理实现。这个的类里的接口的调用是一个非阻塞模式进行的,所以要注册一个回调函数,当完成后进行相应的处理。

示例代码如下(在SDK包中的位置: )

(access_token, new Callback() {

@Override

public void onSuccess(final Object obj)

{

runOnUiThread(new Runnable()

{

@Override

public void run()

{

setOpenIdText(((OpenId)obj).getOpenId());

}

});

}

@Override

public void onFail(int ret, final String msg)

{

runOnUiThread(new Runnable()

{

@Override

public void run()

{

(msg, getApplicationContext());

}

});

}

});

4. 调用OpenAPI

成功获取到access token和openid后,就可以调用QQ登录的OpenAPI了。

建议网站在用户登录后,即调用getUserInfo接口获得该用户的头像、昵称并显示在网站上,使用户体验统一。

调用OpenAPI的过程与获取OpenID类似,要注册一个回调函数,当完成后进行相应的处理。

下面以调用get_user_info接口为例

(在SDK包中的位置:TAuth )

fo(sToken, , d,

new Callback() {

@Override

public void onSuccess(final Object obj)

{

iThread(new Runnable()

{

@Override

public void run()

{

sDialog(SS);

ssage("用户信息", ng());

}

});

}

@Override

public void onFail(int ret, final String msg)

{

iThread(new Runnable()

{

@Override

public void run()

{

sDialog(SS);

(msg, mActivity);

}

});

}

});

附录:Android SDK主要类说明

1. :这个类是处理用户授权登录的,如果成功返回access token, 会以广播的形式广播出去。

2. :这个类来定义接口用到的URL地址。

3. :这个类封装了QQ登录的OpenAPI,每一个接口都是以非阻塞的方式进行调用获取。

本文标签: 登录用户授权进行浏览器