Android 企業微信登錄 接入指南

在這裏插入圖片描述
其實也挺簡單的,那爲什麼還寫呢,還不是因爲微信文檔寫的不清不楚。。

1、創建應用

  1. 管理員登錄企業微信管理後臺,選擇企業應用
  2. 選擇已有應用或添加應用,進入應用詳情頁面。
  3. 選擇“企業微信授權登錄”,在設置界面填寫Android的 App的簽名&包名,設置完成後系統自動生成應用程序schema

這裏要注意了,本地簽名和線上簽名可能會不一樣,從而導致 沒有此權限 調不起來企業微信授權,所以建議debug模式也用正式簽名。

app>build.gradle:

android {
    ...
    signingConfigs {
        release {
            storeFile file("aaa")
            storePassword "aaa"
            keyAlias "aaa"
            keyPassword "aaa"
        }
    }

    buildTypes {
        debug {
            signingConfig signingConfigs.release
        }
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    ...
}

以上aaa參數自行修改即可。

2、導SDK

官方提供的是一個zip的壓縮包,可以解壓以module的方式導入。我是下載的Demo,然後在demo中拷的jar包,放在libs目錄下並As a Library

3、初始化

即註冊到企業微信,非常簡單,就幾行代碼,注意參數別弄混了就行。

	IWWAPI iwwapi;
	private static final String APPID = "WW1e933be11645237c";
	private static final String AGENTID = "1000012";
	private static final String SCHEMA = "wwauth1e933be11645237c000012";
	
    private void registerApp() {
        iwwapi = WWAPIFactory.createWWAPI(this);
        iwwapi.registerApp(SCHEMA);
    }

registerApp()方法可以是在onCreate中調用,也可以是別的地方,看自己需求。

4、發起授權

    private void wxLogin() {
        final WWAuthMessage.Req req = new WWAuthMessage.Req();
        req.sch = SCHEMA;
        req.appId = APPID;
        req.agentId = AGENTID;
        req.state = "dd";
        iwwapi.sendMessage(req, resp -> {
            if (resp instanceof WWAuthMessage.Resp) {
                WWAuthMessage.Resp rsp = (WWAuthMessage.Resp) resp;
                if (rsp.errCode == WWAuthMessage.ERR_CANCEL) {
                    ToastUtil.showCenterToast("登錄取消");
                } else if (rsp.errCode == WWAuthMessage.ERR_FAIL) {
                    ToastUtil.showCenterToast("登錄失敗");
                } else if (rsp.errCode == WWAuthMessage.ERR_OK) {
                    ToastUtil.showCenterToast("登錄成功:" + rsp.code);
                }
            }
        });
    }

state 參數不是必傳。
成功的情況下纔可以拿到code。

到此就差不多了,把code傳給後臺就可以了。

爲什麼這麼說呢,因爲文檔說code可以換取access_token,然後code加access_token可以獲取UserId,而實際上根本沒有獲取access_token的方法,因爲獲取方法在服務端API的菜單下,而且還不需要code參數,而是要AppidSecret就行,親測可以,這微信文檔寫的真是一言難盡。。一直以來也是受業界詬病多年。。

好了,既然移動端也可以拿到access_token,那就可以加上code直接拿到UserId,並傳給後臺。

當然,也可以在拿到code的時候就傳給後臺,剩下的讓後臺去獲取也是一樣的。

至於access_token爲什麼放在服務端API的菜單下,我略微翻看了下服務端的接口,大多都是隻要access_token參數就行了,我想這也是爲了方便吧,其次也是爲了安全,主要還是文檔寫的不行。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章