【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. 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. 修改必要的代码 o 3.1 使用SDK提供的按钮样式 o 3.2 获取access token o 3.3 获取OpenID ∙ 4. 调用OpenAPI ∙ 附录:Android SDK主要类说明 |
1. Android SDK 下载
请到【QQ登录】SDK下载页面下载QQ登录Android SDK。
2. 创建工程及引用SDK源码文件
以下以eclipse为开发的IDE进行范例说明:
1. 创建一个工程,并把 tencent_openapi.jar 放到lib中,如下图所示:
2. 将tencent_openapi.jar加入编译路径中。
具体的操作步骤为:选中tencent_openapi.jar ,右键菜单中选择Build Path,选择Add to Build Path,如下图所示:
1. 创建一个工程,并把 tencent_openapi.jar 放到lib中,如下图所示:
2. 将tencent_openapi.jar加入编译路径中。
具体的操作步骤为:选中tencent_openapi.jar ,右键菜单中选择Build Path,选择Add to Build Path,如下图所示:
看到类似以下的样子,说明已经成功将jar包加入build path :
3. 修改必要的代码
3.1 使用SDK提供的按钮样式
SDK提供了大中小3种登录按钮,开发者可以在代码中设置按钮样式。
示例代码如下(在SDK包中的位置:\TAuthDemo\src\com\tencent\tauthdemo\TAuthDemoActivity.java )
示例代码如下(在SDK包中的位置:\TAuthDemo\src\com\tencent\tauthdemo\TAuthDemoActivity.java )
ImageViewloginBtn = (ImageView) findViewById(R.id.login);
//大按钮
loginBtn.BigLoginBtn(getAssets()));
//中按钮
//loginBtn.LoginBtn(getAssets()));
//小按钮
//loginBtn.SmallLoginBtn(getAssets()));
3.2 获取access token
(1)获取Access token 需要访问网络,所以需要修改l,加入以下代码:
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<activity android:name="t.tauth.TAuthView" 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" />
<!—这里的scheme必须与下面设置的CALLBACK一致,且全部小写。默认值是auth->
<data android:scheme="auth"/>
</intent-filter>
</activity>
(2)处理登录页面的打开方式在t.tauth.TAuthView.class这个类中。需要以intent.putExtra的方式传入如下参数:
参数 | 是否必须 | 含义 |
client_id | 必须 | 申请QQ登录成功后,分配给应用的appid。 |
scope | 可选 | 请求用户授权时向用户显示的可进行授权的列表。 可填写的值是【QQ登录】API文档中列出的接口,以及一些动作型的授权(目前仅有:do_like); 如果要填写多个接口名称,请用逗号隔开。 例如:scope=get_user_info,list_album,upload_pic,do_like 不传则默认请求对接口get_user_info进行授权。 建议控制授权项的数量,只传入必要的接口名称,因为授权项越多,用户越可能拒绝进行任何授权。 |
target | 必须 | 打开登录页面的方式:“_slef”以webview方式打开; "_blank"以内置安装的浏览器方式打开。 |
callback | 可选 | 成功授权后的回调地址。 必须与注册时填写的回调地址一致,用来进行第三方应用的身份验证。 不能包含特殊字符“#”; 不能是浏览器能识别的协议(如:auth.qq); 不区分大小写,在l设置的scheme必须是小写; 不传则默认为auth.qq; 如果设置了,请注意与l里的值一致 |
下面是打开登录授权页面的示例代码(在SDK包中的位置:\TAuthDemo\src\com\tencent\tauthdemo\TAuthDemoActivity.java )
private void auth(String clientId, String target)
{
// 使用WebView打开
Intent intent = new Intent(TAuthDemoActivity.this, t.tauth.TAuthView.class);
intent.putExtra(TAuthView.CLIENT_ID, clientId);
intent.putExtra(TAuthView.SCOPE, scope);
intent.putExtra(TAuthView.TARGET, target);
intent.putExtra(TAuthView.CALLBACK, CALLBACK);
androidsdk安装步骤startActivity(intent);
}
(3)成功授权后会以广播的形式把相应的access token,expires_in的值广播,需要写一个接收器来接收相关的数值。
示例代码如下(在SDK包中的位置:\TAuthDemo\src\com\tencent\tauthdemo\TAuthDemoActivity.java )
public class AuthReceiver extends BroadcastReceiver
{
private static final String TAG="AuthReceiver";
@Override
public void onReceive(Context context, Intent intent)
{
Bundle exts = Extras();
String raw = String("raw");
String access_token = String("access_token");
String expires_in = String("expires_in");
Log.i(TAG, String.format("raw: %s, access_token:%s, expires_in:%s", raw, access_token, expires_in));
if (access_token != null)
{
//获取到access token
mAccessToken = access_token;
((TextView)findViewById(R.id.access_token)).setText(access_token);
TDebug.msg("正在获取", getApplicationContext());
//用access token 来获取open id
mTencentOpenAPI.openid(access_token, new OpenIDListener());
}
}
}
特别提示:
获取到的access token具有3个月有效期,网站需实现防过期策略,并在过期后提示用户再
获取到的access token具有3个月有效期,网站需实现防过期策略,并在过期后提示用户再
次授权。
第三方网站可存储access token信息,以便后续调用OpenAPI访问和修改用户信息时使用。
第三方网站可存储access token信息,以便后续调用OpenAPI访问和修改用户信息时使用。
3.3 获取OpenID
获取到access token后,就可以依据access token 来获取相应的openid:
//用access token 来获取openid
TencentOpenAPI.openid(access_token, new Callback());
所有的开发接口的调用都通过TencentOpenAPI类来代理实现。这个的类里的接口的调用是一个非阻塞模式进行的,所以要注册一个回调函数,当完成后进行相应的处理。
示例代码如下(在SDK包中的位置:\TAuthDemo\src\com\tencent\tauthdemo\TAuthDemoActivity.java )
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论