APICloud 微信授權登錄 頂 原 薦

 

使用此模塊之前建議先配置 config.xml 文件,配置完畢,需通過雲端編譯生效,配置方法如下:

 

  • 名稱:wx
  • 參數:urlScheme、apiKey、apiSecret
  • 配置示例:
  <feature name="wx">
    <param name="urlScheme" value="wxd0d84bbf23b4a0e4"/>
    <param name="apiKey" value="wxd0d84bbf23b4a0e4"/>
    <param name="apiSecret" value="a354f72aa1b4c2b8eaad137ac81434cd"/>
  </feature>
  • 字段描述:

    urlScheme:(必須配置)用於實現應用間跳轉及數據交換,本應用可以啓動微信客戶端,也可以從微信客戶端跳回本應用。urlScheme 的 value 值是從微信開放平臺獲取的 appid。appid 申請方法參考微信開放平臺接入文檔

    apiKey:(必須配置)從微信開放平臺獲取的 appid,值與 urlScheme 相同。appid 申請方法參考微信開放平臺接入文檔

    apiSecret:從微信開放平臺獲取的 secret。獲取 accessToken 時需要配置此項。appid 申請方法參考微信開放平臺接入文檔

 

 

引入wx模塊

var wx = api.require('wx');

判斷當前手機是否安裝微信客戶端

wx.isInstalled(function(ret, err) {
    if (ret.installed) {
        alert("當前設備已安裝微信客戶端");
    } else {
        alert('當前設備未安裝微信客戶端');
    }
});

auth 登錄授權(用於實現第三方登錄

auth({params}, callback(ret, err))

params

apiKey:

  • 類型:字符串
  • 描述:(可選項)從微信開放平臺獲取的 appid,若不傳則從當前 widget 的 config.xml 中讀取,不傳或傳入錯誤的 apiKey,則無法打開微信進行登錄。

callback(ret, err)

ret:

  • 類型:JSON 對象
  • 內部字段:
{
  status: true,       //布爾型;true||false
  code: ''           //字符串類型;getToken 接口需傳入此值,用於換取 accessToken
}

err:

  • 類型:JSON 對象
  • 內部字段:
{
    code: 0     //數字類型;
                //錯誤碼:
                //-1(未知錯誤),
                //0(成功,用戶同意)
                //1 (用戶取消)
                //2 (用戶拒絕授權)
                //3 (當前設備未安裝微信客戶端)
}

示例代碼

var wx = api.require('wx');
wx.auth({
    apiKey: ''
}, function(ret, err) {
    if (ret.status) {
        alert(JSON.stringify(ret));
    } else {
        alert(err.code);
    }
});

getToken獲取授權 accessToken(需要登錄授權成功

getToken({params}, callback(ret, err))

params

apiKey:

  • 類型:字符串
  • 描述:(可選項)從微信開放平臺獲取的 appid,若不傳則從當前 widget 的 config.xml 中讀取。

apiSecret

  • 類型:字符串
  • 描述:(可選項)從微信開放平臺獲取的 secret,若不傳則從當前 widget 的 config.xml 中讀取。

code

  • 類型:字符串
  • 描述:通過 auth 接口授權成功後返回的 code 參數

callback(ret, err)

ret:

  • 類型:JSON 對象
  • 內部字段:
{
  status: true,      //布爾型;true||false
  accessToken: '',   //字符串類型;接口調用憑證,傳給 getUserInfo 接口 獲取用戶信息;有效期2小時
  dynamicToken: '',  //字符串類型;當 accessToken 過期時把該值傳給 refreshToken 接口刷新 accessToken 的有效期。dynamicToken 的有效期爲30天
  expires: 7200,     //數字類型;accessToken 有效期,單位(秒)
  openId: ''         //字符串類型;授權用戶唯一標識
}

err:

  • 類型:JSON 對象
  • 內部字段:
{
    code: 0     //數字類型;
                //錯誤碼:
                //-1(未知錯誤),
                //0 (成功)
                //1 (apiKey值爲空或非法)
                //2 (apiSecret值爲空或非法)
                //3 (code值爲空或非法)
                //4 (網絡超時)
}

示例代碼

var wx = api.require('wx');
wx.getToken({
    apiKey: '',
    apiSecret: '',
    code: "12346857684"
}, function(ret, err) {
    if (ret.status) {
        alert(JSON.stringify(ret));
    } else {
        alert(err.code);
    }
});

補充說明

此接口需要訪問網絡,異步調用 callback 需要一段時間才能返回 accessToken

getUserInfo獲取用戶信息(需要獲取 accessToken 成功

params

accessToken:

  • 類型:字符串
  • 描述:getToken 接口或 refreshToken 接口成功獲取的 accessToken 值

openId:

  • 類型:字符串
  • 描述:getToken 接口或 refreshToken 接口成功獲取的 openId 值

lang:

  • 類型:字符串
  • 描述:(可選項)國家地區語言版本
  • 默認:zh_CN
  • 取值範圍:
    • zh_CN 簡體
    • zh_TW 繁體
    • en 英語

callback(ret, err)

ret:

  • 類型:JSON 對象
  • 內部字段:
{
    status: true,      //布爾型;true||false
    openid: '',        //字符串類型;普通用戶的標識,對當前開發者帳號唯一
    nickname: '',      //字符串類型;普通用戶暱稱
    sex: 1,            //數字類型;普通用戶性別,1爲男性,2爲女性
    headimgurl: '',    //字符串類型;用戶頭像,最後一個數值代表正方形頭像大小(有0、46、64、96、132數值可選,0代表640*640正方形頭像),用戶沒有頭像時該項爲空
    privilege: [],     //數組類型;用戶特權信息,如微信沃卡用戶爲(chinaunicom)
    unionid: ''        //字符串類型;用戶統一標識。針對一個微信開放平臺帳號下的應用,同一用戶的unionid是唯一的。
}

err:

  • 類型:JSON 對象
  • 內部字段:
{
    code: 0     //數字類型;
                //錯誤碼:
                //-1(未知錯誤),
                //0 (成功),
                //1 (accessToken 過期),
                //2  (openId非法),
                //3  (openId值爲空),
                //4     (accessToken值爲空),
                //5     (accessToken非法)
                //6     (網絡超時)
}

示例代碼

var wx = api.require('wx');
wx.getUserInfo({
    accessToken: '',
    openId: ''
}, function(ret, err) {
    if (ret.status) {
        alert(JSON.stringify(ret));
    } else {
        alert(err.code);
    }
});

 

給大家講下 自己做到列子,

apiKey和apiSecret 都是官網提供的,不能授權登錄獲取到用戶信息

function initWXBind() {
	
     var wx = api.require('wx');
     var code = '';
	wx.isInstalled(function(ret, err) {
	    if (!ret.installed) {
	        alert("當前設備未安裝微信客戶端");
	    } else {
	    	wx.auth({
			    apiKey: 'wxd0d84bbf23b4a0e4'
			}, function(ret, err) {
			    if (ret.status) {
			        wx.getToken({
					    apiKey: 'wxd0d84bbf23b4a0e4',
					    apiSecret: 'a354f72aa1b4c2b8eaad137ac81434cd',
					    code: ret.code
					}, function(ret, err) {
					    if (ret.status) {
					    	 api.showProgress({
	                            style: 'default',
	                            animationType: 'fade',
	                            title: '授權成功',
	                            text: '綁定處理中...',
	                            modal: true
	                        });
	                         wx.getUserInfo({
	                            accessToken: ret.accessToken,
	                            openId: ret.openId
	                        }, function(ret, err) {
	                            if (ret.status) {
	                                // 綁定成功 
	                                WXbindAccount(ret.openid);
	                                api.hideProgress();
	                                
	                               
	                            }
	                        }); 
					    } else {
					        alert(err.code);
					    }
					});
		    } 
			});
	    }
	});
}  

 

調用接口,傳參

function WXbindAccount(參數1) {  
    api.ajax({
        url: '接口',
        method: 'get',
        data: {
            values: { 
                openid: 參數, 
            }
        }
    }, function(ret, err) { 
        if (ret.retCode == 200) {
        	$api.setStorage("保存當前user",ret.data);
        	api.closeWin({
            	name:"login"
            }); 
        	return true; 
        } 
    });
}

 

 

 

 

 

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