QQ第三方登陆 您所在的位置:网站首页 Qq极简版能扫码 QQ第三方登陆

QQ第三方登陆

2023-03-13 16:30| 来源: 网络整理| 查看: 265

最近用到QQ第三方登陆,其实仅仅对于第三方登陆而言,用到的东西不多,也就是简化用户注册的烦恼而已。

就搞个超级简化版吧,代码不多,几百行而已。

先看效果,再看代码

          

主函数:

/** * 简易QQ第三方登陆 * * @author shaoshuai * */ public class MainActivity extends Activity { @ViewInject(R.id.iv_user_logo) private ImageView mUserLogo;// 头像 @ViewInject(R.id.tv_user_name) private TextView mUserName;// 网名 @ViewInject(R.id.bt_login) private Button bt_login;// 登陆按钮 @ViewInject(R.id.et_result_info) private EditText et_result_info;// 结果信息 @ViewInject(R.id.et_user_info) private EditText et_user_info;// 用户信息 private Context mContext; public static String mAppid = "222222"; public static Tencent mTencent; @SuppressLint("HandlerLeak") Handler mHandler = new Handler() { @Override public void handleMessage(Message msg) { if (msg.what == 0) {// 设置网名 JSONObject response = (JSONObject) msg.obj; try { if (response.has("nickname")) {// 用户名 String name = response.getString("nickname"); mUserName.setVisibility(android.view.View.VISIBLE); mUserName.setText(name); } if (response.has("figureurl_qq_2")) {// 100*100的头像 String logo = response.getString("figureurl_qq_2"); if (logo == null) { mUserLogo.setImageResource(R.drawable.ic_launcher);// 默认图片 } else { new BitmapUtils(mContext).display(mUserLogo, logo); } } } catch (JSONException e) { e.printStackTrace(); } } } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mContext = getApplicationContext(); ViewUtils.inject(this); mTencent = Tencent.createInstance(mAppid, mContext); initView(); } private void initView() { // 登陆点击 bt_login.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { onClickLogin(); } }); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { Log.e("返回信息", "-->onActivityResult " + requestCode + " resultCode=" + resultCode); if (requestCode == Constants.REQUEST_LOGIN || requestCode == Constants.REQUEST_APPBAR) { Tencent.onActivityResultData(requestCode, resultCode, data, loginListener); } super.onActivityResult(requestCode, resultCode, data); } private void onClickLogin() { if (!mTencent.isSessionValid()) {// 登陆 mTencent.login(this, "all", loginListener); } else {// 退出 mTencent.logout(this); updateUserInfo(); } } IUiListener loginListener = new BaseUiListener(MainActivity.this) { @Override protected void doComplete(JSONObject values) { // {"ret":0, // "openid":"89293B3450BC3115AFC3ADA34143234F", // "access_token":"B5A5E9E3850BBFBEF2044817D1510E22", // "pay_token":"D72E4746E95A1721C33A3D36B04BBDAE", // "expires_in":7776000, // "pf":"desktop_m_qq-10000144-android-2002-", // "pfkey":"574673897173987122dbb16efcad7c07", // "msg":"", "login_cost":503, // "query_authority_cost":351, // "authority_cost":-56924173} et_result_info.setText("返回结果:" + values); initOpenidAndToken(values); updateUserInfo(); } }; public static void initOpenidAndToken(JSONObject jsonObject) { try { String token = jsonObject.getString(Constants.PARAM_ACCESS_TOKEN); String expires = jsonObject.getString(Constants.PARAM_EXPIRES_IN); String openId = jsonObject.getString(Constants.PARAM_OPEN_ID); if (!TextUtils.isEmpty(token) && !TextUtils.isEmpty(expires) && !TextUtils.isEmpty(openId)) { mTencent.setAccessToken(token, expires); mTencent.setOpenId(openId); } } catch (Exception e) { } } private void updateUserInfo() { if (mTencent != null && mTencent.isSessionValid()) { bt_login.setTextColor(Color.RED); bt_login.setText("退出帐号"); UserInfo mInfo = new UserInfo(this, mTencent.getQQToken()); mInfo.getUserInfo(new BaseUiListener(MainActivity.this) { @Override protected void doComplete(JSONObject values) { // {"ret":0,"msg":"","is_lost":0, // "nickname":"┣┫","gender":"男","province":"北京","city":"海淀", // "figureurl":"http:\/\/qzapp.qlogo.cn\/qzapp\/222222\/8FD10C91F5ADCA3F30E8AFC66E9DDBA0\/30", // "figureurl_1":"http:\/\/qzapp.qlogo.cn\/qzapp\/222222\/8FD10C91F5ADCA3F30E8AFC66E9DDBA0\/50", // "figureurl_2":"http:\/\/qzapp.qlogo.cn\/qzapp\/222222\/8FD10C91F5ADCA3F30E8AFC66E9DDBA0\/100", // "figureurl_qq_1":"http:\/\/q.qlogo.cn\/qqapp\/222222\/8FD10C91F5ADCA3F30E8AFC66E9DDBA0\/40", // "figureurl_qq_2":"http:\/\/q.qlogo.cn\/qqapp\/222222\/8FD10C91F5ADCA3F30E8AFC66E9DDBA0\/100", // "is_yellow_vip":"1","vip":"1","yellow_vip_level":"8","level":"8","is_yellow_year_vip":"1"} et_user_info.setText("用户信息:" + values); Message msg = new Message(); msg.obj = values; msg.what = 0; mHandler.sendMessage(msg); } }); } else { bt_login.setTextColor(Color.BLUE); bt_login.setText("登录"); mUserName.setText("用户名"); mUserLogo.setImageResource(R.drawable.ic_launcher);// 默认图片 et_result_info.setText("返回结果信息"); et_user_info.setText("用户详细信息:"); } } } 监听类:

public class BaseUiListener implements IUiListener { private Context mContext; public BaseUiListener(Context mContext) { super(); this.mContext = mContext; } @Override public void onComplete(Object response) { if (null == response) { Toast.makeText(mContext, "登录失败:返回为空", Toast.LENGTH_SHORT).show(); return; } JSONObject jsonResponse = (JSONObject) response; if (null != jsonResponse && jsonResponse.length() == 0) { Toast.makeText(mContext, "登录失败:返回为空", Toast.LENGTH_SHORT).show(); return; } // String result = response.toString(); Toast.makeText(mContext, "登录成功", Toast.LENGTH_SHORT).show(); doComplete((JSONObject) response); } protected void doComplete(JSONObject values) { } @Override public void onError(UiError e) { Log.e("sdkDemo", "错误: " + e.errorDetail); } @Override public void onCancel() { Log.e("sdkDemo", "取消"); } } Demo下载地址: http://download.csdn.net/detail/shao941122/9357121



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有