查看: 1812|回复: 0

[Android常见问题] 关于腾讯官方不再支持QQ以及QQ空间web授权的说明

[复制链接]

Rank: 5Rank: 5

主题:
帖子:
积分:
0

[Android常见问题] 关于腾讯官方不再支持QQ以及QQ空间web授权的说明

[复制链接]
1812 0 | 发表于 2018-2-8 15:53:17 |阅读模式 | |
本帖最后由 陈劲源 于 2018-2-8 15:58 编辑

据腾讯官方公告,于2018年1月31号起,将不再支持web授权方式
公告地址:http://wiki.connect.qq.com/%E9%80%9A%E7%9F%A5

ShareSDK Android版本:(下面逻辑针对ShareSDK Android版本,iOS版本不需要做处理)

从ShareSDK3.1.3版本开始,将不再支持调用web授权,授权逻辑以及未安装客户端异常判断逻辑如下:
private void qqLogin(){
   Platform qq = ShareSDK.getPlatform(QQ.NAME);
   //此方法不管传true还是false,都会调用客户端登陆
qq.SSOSetting(true);
   qq.setPlatformActionListener(new PlatformActionListener() {
      @Override
      public void onComplete(Platform platform, int action, HashMap<String, Object> res) {}

      @Override
      public void onError(Platform platform, int action, Throwable t) {
         String expName = t.getClass().getSimpleName();
         if("TencentSSOClientNotInstalledException".equals(expName)) {
            //没有安装客户端
}
      }

      @Override
      public void onCancel(Platform platform, int action) {}
   });
   qq.authorize();
   //或者调用登录方法
//qq.showUser(null);
}
注:SSOSetting方法不管传true还是false,都会默认全部调用客户端授权,如果没有存在客户端,则会执行OnError回调;


如果是3.1.3之前的版本,用户则需要自己判断客户端是否存在,判断有安装客户端后,再去调用授权或者登录接口,例如:
private void qqLogin(){
   Platform qq = ShareSDK.getPlatform(QQ.NAME);
   //此方法不管传true还是false,都会调用客户端登陆
qq.SSOSetting(true);
   qq.setPlatformActionListener(new PlatformActionListener() {
      @Override
      public void onComplete(Platform platform, int action, HashMap<String, Object> res) {}

      @Override
      public void onError(Platform platform, int action, Throwable t) {}

      @Override
      public void onCancel(Platform platform, int action) {}
   });
   //判断QQ客户端是否存在
if(!qq.isClientValid()){
      //如果不存在,则提示用户去下载安装QQ客户端,然后直接return
      //Toast.makeText...
return;
   }
   qq.authorize();
   //或者调用登录方法
//qq.showUser(null);
}


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

技术支持
免费咨询 | 24小时在线
快速回复 返回顶部 返回列表