前言: 有时候我们实现微信登录功能的时候,会经历繁琐的过程,例如开发账号的审批,项目的审核等。以上内容已经做过讲解,接下来我们就跳过这些过程,直接进行测试账号开发。
服务端
Api.js文件
在之前课程的Api.js文件中添加测试代码:
app.get('/testLogin/', async function(req, res){
//1、获得客户端传递的账号
//2、判断账号是否注册
//3、如已注册,就返回 account 等
var account = req.query.account
if(!account)
{
res.send({})
}
var playerInfo = await DataBaseManager.instance().findPlayer(account, {account:1, pass:1, openId:1})
if(playerInfo)
{
var hallUrl = ServerBlance.getInstance().getIp("HallService", playerInfo.openId)
res.send({code:0, account:playerInfo.account, pass:playerInfo.pass, hallUrl:hallUrl})
}
else
{
//注册
var headUrl = 'http://i4.cfimg.com/583278/00e2ef22ec67b9b0.jpg'
var id = await idGenerater.getID()
var playerInfo = await DataBaseManager.instance().createPlayer(id, account, account, account, 1, headUrl, account, account, 0)
var hallUrl = ServerBlance.getInstance().getIp("HallService", playerInfo.openId)
res.send({code:0, account:playerInfo.account, pass:playerInfo.pass, hallUrl:hallUrl})
}
})
客户端
Config.js文件: 该文件主要用来配置各种URL。
class Config{
}
注意:以下访问地址中的localhost要替换成需要访问的IP。
Config.weixinLoginUrl = "http://localhost:3000/weixinlogin"
Config.testLoginUrl = "http://localhost:3000/testLogin"
module.exports = Config
login.js文件: 点击“登录”功能,调用此文件的接口。
onLoad () {
var self = this
if(!PlatForm.isAnroid() || !PlatForm.isIOS())
{
this.testLoginCom.node.active = true
this.testLoginCom.setLoginEvent(function(account){
LoginManager.testLogin(account)
})
}
}
LoginManager.js文件
var UnitTools = require('UnitTools')
var Config = require('Config')
class LoginManager
{
weixinLogin(){
}
//调用服务器的测试登录接口,创建或返回一个测试账号登录的结果
static testLogin(account){
UnitTools.request(Config.testLoginUrl , {account:account}, function(err, data){
if(err)
{
console.log("ERROR")
return
}
//登录成功之后,连接大厅服务
}, 4000)
}
}
module.exports = LoginManager
UnitTools.js文件
UnitTools.request = function (url,dataJson,cb,timeOut)
{
var dataStr = ""
var firstEnter = true
for(var key in dataJson)
{
if(!firstEnter)dataStr+="&"
firstEnter = false
var value = dataJson[key]
dataStr+=key
dataStr+="="
dataStr+=value
}
try {
var response = false
setTimeout(function(){
if(response == false)
{
cb(new Error("over time at UnitTools.request()"), null)
}
},timeOut)
var xhr = new XMLHttpRequest()
xhr.onreadystatechange = function ()
{
if (xhr.readyState == 4 && xhr.status >= 200 && xhr.status < 400)
{
response = true
cb(null, xhr.responseText)
}
}
var finalUrl = dataStr==""?url:url+"?"+dataStr
finalUrl = encodeURI(finalUrl)
xhr.open("GET", finalUrl, true)
xhr.send()
}
catch (e) {
cb(e, null)
}
}
登录
以上内容部署好之后,我们启动“课程4”中的数据库,然后运行"Api.js"。
接下来我们输入网址“http://localhost:3000?account=10”,之后就可以在网页上看到正确的返回值。