使用此模塊之前建議先配置 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;
}
});
}