QQ第三方登录的时候,显示非官方正版应用,报100044错误;
坑1:我们在QQ互联注册成功后需要设置包名和签名,签名是通过官方提供的工具生成的。注意一点:这里的签名是需要由打包签名之后APK生成,我们测试的时候是没有经过签名的,所以一般我们至少在这里需要添加两个签名:一个我们开发测试的APP直接通过官方工具生成的签名,另一个使我们APP经过我们自己的签名文件签名打包后通过官方提供的工具生成的签名;
 @Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.iv_login_qq://点击qq登录
onClickLogin();
break;
}
}

onClickLogin()方法:

private void onClickLogin() {
if (!mTencent.isSessionValid()) {
mTencent.login(this, "all", loginListener);
isServerSideLogin = false;
} else {
if (isServerSideLogin) { // Server-Side 模式的登陆, 先退出,再进行SSO登陆
mTencent.logout(this);
mTencent.login(this, "all", loginListener);
isServerSideLogin = false;
return;
}
mTencent.logout(this);
}

loginListener接口:

 IUiListener loginListener = new BaseUiListener() {
@Override
protected void doComplete(JSONObject values) {
Timestamp = SystemClock.elapsedRealtime() + "";
Log.d(TAG,
"AuthorSwitch_SDK:" + SystemClock.elapsedRealtime());
initOpenidAndToken(values);//获取登录返回信息token等
updateUserInfo();//异步更新保存用户信息
}
};
initOpenidAndToken()方法:
 public void initOpenidAndToken(JSONObject jsonObject) {
try {
token = jsonObject.getString(Constants.PARAM_ACCESS_TOKEN);
expires = jsonObject.getString(Constants.PARAM_EXPIRES_IN);
openId_qq = jsonObject.getString(Constants.PARAM_OPEN_ID);
Log.d(TAG, "initOpenidAndToken: token:" + token);
Log.d(TAG, "initOpenidAndToken: expires:" + expires);
Log.d(TAG, "initOpenidAndToken: openId:" + openId_qq);
if (!TextUtils.isEmpty(token) && !TextUtils.isEmpty(expires)
&& !TextUtils.isEmpty(openId_qq)) {
mTencent.setAccessToken(token, expires);
mTencent.setOpenId(openId_qq);
}
} catch (Exception e) {
}
}

updateUserInfo()方法:

private void updateUserInfo() {
if (mTencent != null && mTencent.isSessionValid()) {
IUiListener listener = new IUiListener() { @Override
public void onError(UiError e) {
Log.d(TAG, "onError: ");
} @Override
public void onComplete(final Object response) {
new Thread() { @Override
public void run() {
JSONObject json = (JSONObject) response;if (json.has("figureurl")) {
try {
String userName = json.getString("nickname");
Log.d(TAG, "run: " + userName);
String userIcon = json.getString("figureurl_qq_2");
Log.d(TAG, "run: " + userIcon);
String gender = json.getString("gender");
String province = json.getString("province");
String city = json.getString("city");
SharedPreferences user_login = LoginActivity.this.getSharedPreferences("user_login", MODE_PRIVATE);
SharedPreferences.Editor edit = user_login.edit();
edit.putString("user_name", userName);
edit.putString("user_pic", userIcon);
edit.putString("gender", gender);
edit.putString("province", province);
edit.putString("city", city);
edit.putString("openid_qq", openId_qq);
edit.commit();
mHandler.sendEmptyMessage(POST_LOGIN_INIFO);
} catch (JSONException e) { }
}
} }.start();
} @Override
public void onCancel() {
Log.d(TAG, "onCancel: ");
}
};
mInfo = new UserInfo(this, mTencent.getQQToken());
mInfo.getUserInfo(listener); } else {
// mUserInfo.setText("");
// mUserInfo.setVisibility(android.view.View.GONE);
// mUserLogo.setVisibility(android.view.View.GONE);
}
}

必须重写onActivityResult()方法

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
Log.d(TAG, "-->onActivityResult:requestCode= " + requestCode + " resultCode="
+ resultCode);
if (requestCode == Constants.REQUEST_LOGIN
|| requestCode == Constants.REQUEST_APPBAR) {
Tencent.onActivityResultData(requestCode, resultCode, data,
loginListener);
AppShared.setUserLogin(this, true);
ToastUtils.toast("登录成功");
}
super.onActivityResult(requestCode, resultCode, data);
}
 一个建议:用户头像建议保存用户头像链接后再直接保存bitmap,在onResume中下载Bitmap图片,这样即使你设置了清楚缓存,在返回给页面时也会重新去获取用户头像

QQ互联登录以及非官方正版应用报100044错误的更多相关文章

  1. QQ互联登录回调路径错误redirect uri is illegal(100010)

    QQ互联登录设置的路径设置

  2. Win7执行应用报CLR20r3错误处理记录

    Windows7环境下运行应用报"CLR20r3"错误,错误信息如下: 问题详细信息: 问题签名: 问题事件名称: CLR20r3 问题签名 : qbbtools.exe 问题签名 ...

  3. QQ互联登录提示redirect uri is illegal(100010)完美解决方法

    大概2015年3月低,腾讯QQ互联开发平台调整了有关QQ登录应用回调地址填写规则,用来修复QQ登录过程因回调地址的漏洞可能导致存在的安全问题. 博主接触这块较多,但也是四月才了解此事,从4月起,所有新 ...

  4. 使用QQ互联登录应用

    QQ登录集成插件简介 互联网应用越来越多,通常每一个应用都会要求用户注册登录,粗略估记一下,QQ,微博,微信,银行帐号.邮箱,招聘网站账户,淘宝帐号,支付宝帐号,公司OA帐号....粗略算一下,十几个 ...

  5. QQ互联登录 微博登录问题

    qq 需要用开放平台的扣扣测试 审核通过后 开放所有用户 微博 出现获取token  个人信息失败  需要在微博里添加测试账号  审核通过后 开放所有用户

  6. Discuz3.1登录QQ互联显示redirect uri is illegal(100010)的解决

    QQ互联最近也是BUG不断,引起了很多用户的不满,从早前关闭群组功能,到发布2.0接口标准,引发系列站长用户的连锁反应.而Discuz从X3开始,为了应对QQ互联的2.0接口标准,采用了云平台来整合Q ...

  7. QQ互联开发-01-开发者注册和网站应用申请

    首先需要申请网站应用 要想使用QQ互联,首先需要先注册一个开发者账号,使用QQ号码可以注册,注册后,就可以创建网站应用了: 通过下面地址:https://connect.qq.com/,我们去登录QQ ...

  8. QQ互联登陆出现(1054) Unknown column “conuintoken” in “field list”

    在dz论坛中打开了QQ互联登录功能之后提示(1054) Unknown column conuintoken in field list 错误 我们看到sql 错误就是说没有conuintoken字了 ...

  9. 对163k地方门户网站系统QQ互联功能修改

    163k地方门户网站QQ互联申请时遇到的问题: "禁止开发商强制用户重新注册或绑定其他帐号" 原因是用户登录完QQ还需要注册帐号或者绑定原有帐号 163k地方门户网站的QQ互联登录 ...

随机推荐

  1. .NET Core性能测试组件BenchmarkDotNet 支持.NET Framework Mono

    .NET Core 超强性能测试组件BenchmarkDotNet 支持Full .NET Framework, .NET Core (RTM), Mono. BenchmarkDotNet支持 C# ...

  2. 判断一个对象是jQuery对象还是DOM对象

    今天调试一段代码的时候,看到其中一个变量,想知道它到底是jquery对象还是dom对象. 虽然直接console出这个对象,看它的内部可以判断出来.但是我想有没有什么更方便的方法呢. 后来我想到了一个 ...

  3. 【腾讯优测干货分享】如何降低App的待机内存(三)——探索内存增长的原因

    本文来自于腾讯优测公众号(wxutest),未经作者同意,请勿转载,原文地址:https://mp.weixin.qq.com/s/8BiKIt3frq9Yv9KV5FXlGw 1.3新问题的进一步挖 ...

  4. 浅谈命令查询职责分离(CQRS)模式

    在常用的三层架构中,通常都是通过数据访问层来修改或者查询数据,一般修改和查询使用的是相同的实体.在一些业务逻辑简单的系统中可能没有什么问题,但是随着系统逻辑变得复杂,用户增多,这种设计就会出现一些性能 ...

  5. ASP.NET Web API 控制器创建过程(一)

    ASP.NET Web API 控制器创建过程(一) 前言 在前面对管道.路由有了基础的了解过后,本篇将带大家一起学习一下在ASP.NET Web API中控制器的创建过程,这过程分为几个部分下面的内 ...

  6. Java——搭建自己的RESTful API服务器(SpringBoot、Groovy)

    这又是一篇JavaWeb相关的博客,内容涉及: SpringBoot:微框架,提供快速构建服务的功能 SpringMVC:Struts的替代者 MyBatis:数据库操作库 Groovy:能与Java ...

  7. WCF学习之旅—WCF服务部署到应用程序(十)

    上接  WCF学习之旅—WCF寄宿前的准备(八) WCF学习之旅—WCF服务部署到IIS7.5(九) 五.控制台应用程序宿主 (1) 在解决方案下新建控制台输出项目 ConsoleHosting.如下 ...

  8. 游戏服务器菜鸟之C#初探四游戏服务

    经过多次折腾之后,在一次进行了一次重大的重构,去解决问题 主要重构如下 1.将原来的单一协议修改多协议进行,一些查询.认证的功能都采用HTTP进行,避免全部采用TCP链接资源的消耗: 2.原来单一的部 ...

  9. 解析大型.NET ERP系统 单据标准(新增,修改,删除,复制,打印)功能程序设计

    ERP系统的单据具备标准的功能,这里的单据可翻译为Bill,Document,Entry,具备相似的工具条操作界面.通过设计可复用的基类,子类只需要继承基类窗体即可完成单据功能的程序设计.先看标准的销 ...

  10. scheduleInRunLoop作用

    例子一: - (void)setUpStreamForFile:(NSString *)path { // iStream is NSInputStream instance variable iSt ...