Taro开发微信小程序实现简单的登录退出功能

Taro是由凹凸实验室打造的一套遵循 React 语法规范的多端统一开发框架,还有我发现从某度上搜索的结果首页居然看不到Taro框架的任何信息,但是谷歌首页就直接给出了结果,Taro使用文档。我是准备用它来开发微信小程序的,而且公司使用的前端架构正好是React,感觉冥冥之中一切自有定数。
一些初始化的例子我这里不多说了,官方说的很详细了,我选择的初始化方式是使用redux,Sass,并且不开启TypeScript.
首先我们要进入的页面是index.js
试想一下,如果你第一次使用这款应用的时候需要登录,那么你第二次肯定不会想再登录一次了,所以依托微信这个母体,小程序可以在进入页面时直接加载本地的一些信息,所以我们可以在componentWillMount中调用

Taro.getStorage({key:'userInfo'}).then(rst => {   //从缓存中获取用户信息
	this.props.setBasicInfo(rst.data)
})

这个函数也很简单,下面看一下action 和 reducer

export const setBasicInfo = (param) => {
    // console.log('222',param)
    return {
        type: BASICINFO,
        payload: param
    }
}
switch (action.type) {
     case BASICINFO:
         // console.log('i am here',action)
         return {
             ...state,
             basicinfo: action.payload
         }
     default:
         return state
 }

这个BASICINFO就是和初始化时给出的样例一样,在常量中定义的一个值。这样一来,如果上次登录过的话,这次一进入到项目,就可以直接获取用户信息了。
接下来做一个登录页面,UI 大概就写这个样子,

<View className='index'>
    <View>
        <Text>申请获取你的公开信息(昵称、头像等)</Text> 
        <Button open-type='getUserInfo' onGetUserInfo={this.getUserInfo} > 微信授权 </Button>
    </View>
</View >

虽说封装了框架,很多还是支持微信小程序的写法的,比如open-type,这个和原生的写法并没有什么出入。

getUserInfo = (userInfo) => {
    console.log('userinfo',userInfo)
    if(userInfo.detail.userInfo){   //同意
        this.props.setBasicInfo(userInfo.detail.userInfo) //将用户信息存入redux
        Taro.setStorage({key:'userInfo',data:userInfo.detail.userInfo}).then(rst => {  //将用户信息存入缓存中
            Taro.navigateBack()
        })
    } else{ //拒绝,保持当前页面,直到同意 
    }
}

看现在的逻辑,登录之后,就可以把用户信息存储到缓存中了,下次进入小程序,也不会需要你登录了。而且注意一下Taro.navigateBack(),他可以跳转回到login之前的界面,实为***点睛之笔***。
页面UI大概可以是这个样子:其中的className为引入的全局样式,使用的是Taro-ui,但是Taro-ui没有和框架绑定,需要使用者自行下载。不过使用什么无所谓,意思到位就好。

<View className='index'>
    <View className='at-row userinfo'>
        <View className='at-col at-col-3 userinfo-avatar'>
            <AtAvatar openData={{type:'userAvatarUrl'}} circle></AtAvatar>
        </View>
        <View className='at-col at-col-9'>
            {
                basicinfo.nickName 
                    ? <Text>{basicinfo.nickName}</Text>
                    : <AtButton size='small' onClick={this.login}>登录</AtButton>
            }
        </View>
    </View>
    <View>
        <AtList>
            <AtListItem title='个人信息' note='可修改单位、电话等信息' arrow='right' onClick={this.personInfo} />
        </AtList>
    </View>
    {
        basicinfo.nickName 
            ?  <View className='logout-btn'>
                <AtButton size='small'  onClick={this.logout}>退出账号</AtButton>
            </View>
            : null
    }
    <View className='logout-model'>
        <AtModal
            isOpened={isOpened}
            title='确定退出?'
            cancelText='取消'
            confirmText='确认'
            onCancel={this.handleCancel}
            onConfirm={this.handleConfirm}
            content='退出登录后将无法查看会议,重新登录即可查看'
        />
    </View>
    
</View >

这里有判断逻辑,点击退出就清除缓存内容,点击登录跳转,然后登录成功再跳回来。

login = () => {
    Taro.navigateTo({url: '/pages/login/login'});
}
logout = () => {
    this.setState({isOpened:true})
}
handleCancel = () => {
    this.setState({isOpened:false})
}
handleConfirm = () => {
    this.props.setBasicInfo('') //将用户信息存入redux
    Taro.removeStorageSync('userinfo')
    this.setState({isOpened:false})
}
personInfo = () => {
    Taro.navigateTo({url: '/pages/info/info'});
}

这样就实现了简单的登录登出功能,希望给入门的朋友带来一点帮助,谢谢。

  • 5
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: 要实现taro微信小程序登录,你需要做以下几步: 1.在微信公众平台注册小程序并获取小程序AppID。 2.在小程序中使用微信登录授权组件,用户点击授权按钮后,获取到用户的授权信息,包括用户的openid和session_key。 3.将用户的openid和session_key发送给后端服务器进行验证。后端服务器可以使用微信提供的接口校验用户信息是否正确,同时可以自己进行逻辑处理,例如将用户信息存储到数据库中,生成token等。 4.后端服务器返回校验结果给小程序,小程序根据结果进行相应的处理,例如跳转到主页或者提示用户登录失败等。 需要注意的是,用户的openid和session_key是敏感信息,需要加密传输和存储,以保证用户信息的安全性。 ### 回答2: taro是一种开发工具,用于创建小程序,而微信小程序是一种在微信平台上运行的应用程序。要在taro实现微信小程序登录功能,可以按照以下步骤进行操作。 首先,在小程序的app.js文件中引入taro框架和相关组件,然后在页面页面代码中引入taro的按钮组件,用于触发登录事件。 然后,在小程序的配置文件app.json中配置登录所需的权限,例如获取用户信息的权限等。 接下来,在小程序的登录页面中,可以使用taro提供的登录API,调用微信的登录接口,获取到用户的临时登录凭证code。 然后,将code发送给后端服务器,并使用code调用微信提供的接口,获取到用户的唯一标识openid和用户的会话秘钥sessionKey。 在获取到用户的openid后,可以根据业务需求将用户的信息存储到数据库中,或者进行进一步的用户信息获取和个性化设置。 最后,在小程序中进行用户登录状态的管理,可以使用taro的状态管理工具,在登录成功后将用户的登录状态设置为已登录,并在需要验证登录状态的页面中进行判断。 总之,通过在taro框架下对微信小程序登录流程进行处理,可以实现用户登录和身份验证功能,为用户提供更便捷、安全的使用体验。 ### 回答3: taro是一种多端开发框架,可以用于开发微信小程序。使用taro开发微信小程序登录功能的具体步骤如下: 1. 首先,在taro项目中创建一个登录页面,可以使用taro提供的组件进行布局和样式设置。 2. 在登录页面的按钮事件中,调用微信小程序提供的wx.login()方法,获取用户的登录凭证code。 3. 将获取到的code发送至后台服务器,后台服务器可以通过code向微信服务器发送请求,获取用户唯一标识的openid和会话密钥session_key。 4. 后台服务器可以保存用户openid和session_key,在后续请求中使用。 5. 用户登录成功后,可以将openid通过wx.setStorage()方法保存在微信小程序本地缓存中,用于后续判断用户是否已登录。 6. 在其他页面中,可以通过wx.getStorage()方法获取保存在本地缓存中的openid,判断用户是否已登录。 7. 登录成功后,可以根据业务需求进行相应的页面跳转或数据展示。 需要注意的是,在开发过程中需要将taro编译成微信小程序的语法,可以使用taro的命令行工具进行编译。另外,用户的敏感信息(如openid、session_key等)需要进行合理的保护和加密,以确保用户信息的安全性。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值