1. 程式人生 > >QQ 和微信的第三方登入

QQ 和微信的第三方登入

在專案的build.gradle 裡面的

    dependencies {
        classpath 'com.android.tools.build:gradle:3.1.2'
classpath 'com.mob.sdk:MobSDK:+'
// NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
}
}
app裡面     切記最低APi 為 16
/ 新增外掛
apply plugin: 'com.mob.sdk'
// 在MobSDK的擴充套件中註冊SMSSDK的相關資訊 MobSDK { appKey "2644a0499208c" appSecret "c3257ee488e6fbf1502dde11495c2c49" SMSSDK {} //第三方登入 ShareSDK { //平臺配置資訊 devInfo { Wechat {//微信 appId "wx4868b35061f87885" appSecret "64020361b8ec4c99936c0e3999a9f249" } QQ {//QQ appId "100371282" appKey "aed9b0303e3ed1e27bae87c33761161d"
} } } }

新建app 繼承  application   在oncreate()方法裡面  初始化

public class Myapp extends Application {
     

    @Override
public void onCreate() {
        super.onCreate();
MobSDK.init(this);
}
}

兩個方法

/*
* 第三方登入QQ
* */
public void getQQ(){

    Platform plat = ShareSDK.getPlatform(QQ.NAME);
plat.removeAccount(true
); //移除授權狀態和本地快取,下次授權會重新授權 plat.SSOSetting(false); //SSO授權,傳false預設是客戶端授權,沒有客戶端授權或者不支援客戶端授權會跳web授權 plat.setPlatformActionListener(new PlatformActionListener() {//授權回撥監聽,監聽oncomplete,onerror,oncancel三種狀態 @Override public void onComplete(Platform platform, int i, HashMap<String, Object> hashMap) { Iterator iterator = hashMap.entrySet().iterator(); while (iterator.hasNext()){ Map.Entry next = (Map.Entry) iterator.next(); Object key = next.getKey(); Object value = next.getValue(); Log.d("哈哈", "onComplete: "+key+" "+value); } } @Override public void onError(Platform platform, int i, Throwable throwable) { Log.d("哈哈", "onError: "+platform.getName()+" "+platform.getDb()+" "+" "+platform.getId()+" "+platform.getPlatformActionListener()+" "+platform.getVersion()); } @Override public void onCancel(Platform platform, int i) { Log.d("哈哈", "onCancel: "+platform.getName()); } }); if (plat.isClientValid()) { //todo 判斷是否存在授權憑條的客戶端,true是有客戶端,false是無 } if (plat.isAuthValid()) { //todo 判斷是否已經存在授權狀態,可以根據自己的登入邏輯設定 Toast.makeText(this, "已經授權過了", Toast.LENGTH_SHORT).show(); return; } //plat.authorize(); //要功能,不要資料 plat.showUser(null); //要資料不要功能,主要體現在不會重複出現授權介面 } /* * 第三方微信登入 * */ public void getWeiXin(){ Platform plat = ShareSDK.getPlatform(Wechat.NAME); plat.removeAccount(true); //移除授權狀態和本地快取,下次授權會重新授權 plat.SSOSetting(false); //SSO授權,傳false預設是客戶端授權,沒有客戶端授權或者不支援客戶端授權會跳web授權 plat.setPlatformActionListener(new PlatformActionListener() {//授權回撥監聽,監聽oncomplete,onerror,oncancel三種狀態 @Override public void onComplete(Platform platform, int i, HashMap<String, Object> hashMap) { Iterator iterator = hashMap.entrySet().iterator(); while (iterator.hasNext()){ Map.Entry next = (Map.Entry) iterator.next(); Object key = next.getKey(); Object value = next.getValue(); Log.d("哈哈", "onComplete: "+key+" "+value); } } @Override public void onError(Platform platform, int i, Throwable throwable) { Log.d("哈哈", "onError: "+platform.getName()+" "+platform.getDb()+" "+" "+platform.getId()+" "+platform.getPlatformActionListener()+" "+platform.getVersion()); } @Override public void onCancel(Platform platform, int i) { Log.d("哈哈", "onCancel: "+platform.getName()); } }); if (plat.isClientValid()) { //todo 判斷是否存在授權憑條的客戶端,true是有客戶端,false是無 } if (plat.isAuthValid()) { //todo 判斷是否已經存在授權狀態,可以根據自己的登入邏輯設定 Toast.makeText(this, "已經授權過了", Toast.LENGTH_SHORT).show(); return; } //plat.authorize(); //要功能,不要資料 plat.showUser(null); //要資料不要功能,主要體現在不會重複出現授權介面 }

此文摘自 杜德日 先生的文章點選檢視源文