sharesdk微信,QQ第三方登录

第一次写,水平有限。基本算是抄着官网的,可以直接看官方文档

官方地址http://www.mob.com

一.注册mob开发者账号,创建应用,获取AppKey与App Secret  

二.开始集成    详情://http://wiki.mob.com/sdk-share-android-3-0-0/

    1)打开根目录的build.gradle,配置

buildscript {

    repositories {

         jcenter()

    }

    dependencies {

       ...

        classpath "com.mob.sdk:MobSDK:2018.0319.1724"

    }

2)在应用使用了sharesdk的moudule的build.gradle中添加如下配置

MobSDK {

    appKey "d580ad56b4b5"

    appSecret "7fcae59a62342e7e2759e9e397c82bdd"

 

    ShareSDK {

        //平台配置信息

        devInfo {//其中的devInfo为来自社交平台的应用信息。

     

            Wechat {

                appId "wx4868b35061f87885"

                appSecret "64020361b8ec4c99936c0e3999a9f249"

            }

            QQ {

                appId "111111"

                appKey "111111"

                shareByAppClient true

            }

        }

}

}

  3)配置平台

 

三.a.初始化MobSDK,在Application中的oncreate中添加

MobSDK.init(this);

b.开始授权获取信息

Platform plat = ShareSDK.getPlatform(QQ.NAME);

plat.removeAccount(true); //移除授权状态和本地缓存,下次授权会重新授权

plat.SSOSetting(false); //SSO授权,传false默认是客户端授权,没有客户端授权或者不支持客户端授权会跳web授权

plat.setPlatformActionListener(new PlatformActionListener() {

   @Override

   public void onComplete(Platform platform, int i, HashMap<String, Object> hashMap) {

        //在platform.getDb().exportData()或者hashMap找需要的信息

        //String unionid =platform.getDb().get("unionid”);//微信获取unionid

      String s = platform.getDb().exportData();//

      Log.d(TAG, "qqlogin---onComplete: "+s);

      Iterator ite = hashMap.entrySet().iterator();

      while (ite.hasNext()) {

         Map.Entry entry = (Map.Entry)ite.next();

         Object key = entry.getKey();

         Object value = entry.getValue();

         System.out.println(key+": "+value);

      }

   }

 

   @Override

   public void onError(Platform platform, int i, Throwable throwable) {

      throwable.printStackTrace();

   }

 

   @Override

   public void onCancel(Platform platform, int i) {

 

   }

});//授权回调监听,监听oncomplete,onerror,oncancel三种状态

if(plat.isClientValid()){

   //判断是否存在授权凭条的客户端,true是有客户端,false是无

}

if(plat.isAuthValid()){

   //判断是否已经存在授权状态,可以根据自己的登录逻辑设置

   Toast.makeText(context, "已经授权过了", Toast.LENGTH_LONG).show();

   return;

}

// plat.authorize();   //要功能,不要数据   调用此方法  res为空

plat.showUser(null);    //要数据不要功能,主要体现在不会重复出现授权界面

4)微信登录

a.微信开放平台创建应用 并开通微信登录功能

b.获取AppId,与appSecret填写如平台配置信息

c.包名和应用签名对应,debug与release的签名不一样,签名不一致无法调起微信

d.配置Manifest文件,配置sharesdk和配置微信回调(qq好像不用了 估计是sharesdk弄好了,以前貌似也有配置)

<activity

        android:name="com.mob.tools.MobUIShell"

        android:theme="@android:style/Theme.Translucent.NoTitleBar"

        android:configChanges="keyboardHidden|orientation|screenSize"

        android:windowSoftInputMode="stateHidden|adjustResize">

<!--微信分享回调 -->

<activity android:name=".wxapi.WXEntryActivity"

         android:theme="@android:style/Theme.Translucent.NoTitleBar"

        android:configChanges="keyboardHidden|orientation|screenSize"

android:exported="true"

android:screenOrientation="portrait" />

5)QQ登录

a.腾讯开发平台创建应用

b.获取Appid和appkey

c.若不同应用信息要互通,openid是不一样的。需要打通UNIONID (打通地址  )

d.获取unionid 的接口地址

https://graph.qq.com/oauth2.0/me?access_token=DGKFDJGJDF8346GFNF34BDF8DDF4&unionid=1

 

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页