关于TencentQQ互联

来源:互联网 发布:内存卡恢复数据软件 编辑:程序博客网 时间:2024/06/10 05:33

package com.example;import org.json.JSONException;import org.json.JSONObject;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.os.Handler;import android.os.Handler.Callback;import android.os.Message;import android.util.Log;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import com.auth.login.util.ConfigUtil;import com.tencent.tauth.IUiListener;import com.tencent.tauth.Tencent;import com.tencent.tauth.UiError;/** * 登陆测试界面 *  * @author WLei *  */public class AuthLoginActivity extends Activity implements OnClickListener,Callback {private Button btn_qq_login;private Tencent mTencent;// Tencent入口类,通过该类调用Tencent open APIprivate Handler handler;// 处理线程private String SCOPE = "get_simple_userinfo,add_topic";// 请求scope,需要哪些授权private String openid;// 授权成功返回的openid,通过该id做后续操作private String access_token;// 令牌private String expires_in;  //失效时间,System.currentTimeMillis() +// Long.parseLong(expires_in) *// 1000。最大有效时间,超过需要重新登陆/** Called when the activity is first created. */@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);btn_qq_login = (Button) findViewById(R.id.btn_qq_login);mTencent = Tencent.createInstance(ConfigUtil.qq_client_id,this.getApplicationContext());btn_qq_login.setOnClickListener(this);}@Overridepublic void onClick(View v) {onClickLogin();return;}@Overridepublic boolean handleMessage(Message msg) {switch (msg.arg1) {case 1: {Log.i("test", "授权失败");return false;}case 2: {JSONObject object = (JSONObject) msg.obj;try {access_token = object.getString("access_token").toString();openid = object.getString("openid").toString();expires_in = object.getString("expires_in").toString();Log.i("test", "access_token="+access_token+",openid="+openid+",expires_in="+expires_in);//UserInfo info = new UserInfo(this, mTencent.getQQToken());} catch (JSONException e) {e.printStackTrace();}}}return false;}// 让SDK接口能成功接受回调@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {// TODO Auto-generated method stubmTencent.onActivityResult(requestCode, resultCode, data);}protected void onClickLogin() {if (!mTencent.isSessionValid()) {IUiListener listener = new IUiListener() {@Overridepublic void onError(UiError arg0) {// 授权失败的回调// TODO Auto-generated method stubMessage msg = new Message();msg.arg1 = 1;handler.sendMessage(msg);}@Overridepublic void onComplete(Object arg0) {// 授权成功// TODO Auto-generated method stubMessage msg =new Message();msg.arg1 = 2;msg.what = 1;msg.obj = arg0;handler.sendMessage(msg);}@Overridepublic void onCancel() {// 取消授权// TODO Auto-generated method stubMessage msg = new Message();msg.arg1 = 3;handler.sendMessage(msg);}};mTencent.login(this, SCOPE, listener);} else {mTencent.logout(this);}}// 获取用户资料线程class MyThread extends Thread {/* * (non-Javadoc) *  * @see java.lang.Thread#run()                 */@Overridepublic void run() {}}}

项目还没开工,今天没事做了个第三方登陆平台的Demo,发现了一些问题,不知道广大猿友有没有发现,也希望大神指点下。

       首先QQ互联有自己的SDK,利用他封装好的方法可以很方便的实现QQ登陆,实现代码如上,已经获取到了openid,access_token,expires_in,后面获取其他一些东西,这些参数也很容易了。

 后来发现用他封装的SDK做的,在流畅方面还是有所不理想。后来想用OAuth2.0协议做,但是很蛋疼的一点是移动应用接入,回调地址只能是网址,还是你在QQ互联上面填写的网址,代码方面基本都实现了,就是请求的时候会提示100010,后来看了下返回码,是回调错误,希望大神给点思路,如何在OAuth2.0协议下接入移动应用(没有自己网站的情况下)


0 0
原创粉丝点击