小程序-用户授权授权后的信息读取流程

小程序-用户授权授权后的信息读取流程,第1张

在小程序中,不允许直接d出用户授权的选择框,所以需要开发人员在界面上来设置提示信息,诱导用户点击,然后完成用户数据的录入和存取。在开发的过程中,某些请求是依托用户登录之后获取到的openId才能继续执行的,所以在页面上,某些数据渲染之前需要判断用户是否登陆,如若没有登录,怎样设计更好的交互来让用户登录。

使用小程序时,首先会进入到appjs这个文件中,这个文件里包含了俩个方法,一个是wxlogin(),另一个是wxgetSetting(),wxlogin()的目的是为了在用户登陆之后获取到一个对应的 code 值,然后通过这个值去自己的后台换取一个openId;wxgetSetting()第一是为了判断用户的授权范围,另一个是获取对应权限内的信息,比如说,用户授权小程序可以使用自己的基本信息,就可以在这个方法中获取到用户的头像、微信名、微信设置的城市这些字段,这就是一些需要掌握的基本流程,具体怎么实现登录呢?

在小程序中,官方给出了一种解决方案-button按钮

在这个按钮中,有几个属性:

●  type :按钮的类型,可以设置为primary,背景色为绿色

●  wx:if :显示条件,内容分别为hasUserInfo和canIUse俩个字段,同时为真即可显示(俩个字段均需要在data中初始化赋值)

●  open-type :按钮的功能类型,getUserInfo是为了获取基本信息(也可以设置为其他→getPhoneNumber:获取用户手机号)

●  bindgetuserinfo :绑定的点击事件。在js中写对应的逻辑

在用户点击按钮之后,会出现一个d窗,确定用户是否授权 :

当用户点击允许之后,进入我们绑定的getUserInfo函数中:

在执行逻辑中,首先通过wxlogin()方法获取到用户对应的openId,方便后续的 *** 作,然后再通过wxgetUserInfo()来获取到用户的基本信息,发送请求,将基本信息入库存储,或者展示到页面上,就完成了登录流程。

1在登陆中可能会涉及到多个页面登陆成功之后的状态同步,可以通过 appgloableData 来实现,在全局对象中设置一个字段,然后不论在哪个页面实现了登录,都可以通过全局对象来完成更新。

2在 获取用户信息 的时候,有时候需要获取的是 中文类型 的数据,可以在 wxgetSetting() 的请求体中加一个 lang:'zh_CN'。 这样获取到的数据就是中文格式的了

本地存储分为异步和同步。

设置:

异步:wxsetStorage 

同步:wxsetStorageSync

获取:

异步:wxgetStorage

同步:wxgetStorageSync

移除:

异步:wxremoveStorage

同步:wxremoveStorageSync

清除所有:

异步:wxclearStorage

同步:wxclearStorageSync

这里给大家以同步为例,

wxsetStorageSync('key','value')

接下来,我们说一下本地收藏功能怎么实现的呢

这是一个列表渲染页面,每一个view点进去的详情页面其实是一个页面,只是传不同的id,来赋值不同的数据展示出来而已。

通过JS文件中带参数的跳转,把相应的数据传到详情页中,那接下来就是展示详情页

通过wxrequest获取到服务器数据之后将数据(一个json对象)绑定至post数组,然后页面中获取数据的时候可以直接通过(数组名属性)直接取值。数组中有多个json对象的话,则需要wx:for遍历取值。

单个json对象数据绑定

页面取值:

在小程序中没有DOM *** 作的方法,所以获取不到相应的DOM节点进行高度设置。

解决方案

1css方案

<view class="{{isFold 'flod':'extend' }}" bindtap="flodFn">

我是一个很长的文字

</view>

flod{

//折叠样式

}

extend{

//展开样式

}

flodFn:function(){

thissetData({

isFold: !thisisFold

});

}

2动态渲染方案

<view bindtap="flodFn">

<view wx:if="{{isFold}}" >

我是一个很长的文字

</view>

<view wx:else>

我是一个很长的文字

</view>

</view>

flodFn:function(){

thissetData({

isFold: !thisisFold

});

}

这是因为 setData 方法只能设置一个值,而你在 consolelog 中打印了多行。

如果要在 pageData 中显示多行数据,可以将其更改为一个数组,并在循环中将每个时间推入数组中。例如:

 let times = []; 

// 循环中 

let d = new Date(itemtimereplace(/-/g, '/'))getTime();

let time = timeHandle(d)

timespush(time); 

// 循环结束后 

thissetData({ 

pageData:times 

})

如果你要显示最新的时间那么可以在循环结束后使用unshift方法添加到数组的第一个位置

在data里面定义一个变量,前台绑定到input里面,然后给通过事件,方法改变data里面的变量。

微信小程序

1,微信小程序,简称小程序,缩写xcx,英文mini program。是一种不需要下载安装即可使用的应用,它实现了应用“触手可及”的梦想,用户扫一扫或者搜一下即可打开应用。也体现了“用完即走”的理念,用户不用关心是否安装太多应用的问题。

2,应用将无处不在,随时可用,但又无需安装卸载。

3,微信小程序于2017年1月9日凌晨正式上线。张小龙随后在朋友圈发出一条写着“201719”的状态,同时配有 iPhone 一代的新品发布图。张小龙以这样的形式,向乔布斯致敬。

/计算器/

import javaawt;

import javaxswing;

import javaxswingborder;

import javaawtevent;

public class Calculator implements ActionListener{

JFrame frame;

JPanel panel;

JTextField tfShow;/定义显示文本框/

JButton b1[]=new JButton[10]; /数字按钮/

JButton b2[]=new JButton[6]; / *** 作按钮/

boolean isNumber;/判断是否输入多位数字的变量/

double number;/存储输入数值、显示结果的变量/

double result;/存储中间运算结果的变量/

char operator;/存储当前 *** 作符的成员变量/

public Calculator(){

frame=new JFrame("计算器");

framesetSize(300,300);/指定框架窗口的大小/

framesetResizable(false);/使框架窗口不可改变大小/

JPanel contentPane=(JPanel)framegetContentPane();

contentPanesetBorder(new EmptyBorder(20,20,20,20));/绘制框架的指定大小的空透明边框/

tfShow=new JTextField("0",25);/指定属性的文本域/

tfShowsetHorizontalAlignment(JTextFieldRIGHT);/设置文本域中文本的对齐方式/

isNumber=true;/初始值设置/

number=0;/初始值设置/

result=0;/初始值设置/

operator=' ';/初始值设置/

for(int i=0;i<b1length;i++){

b1[i]=new JButton(IntegertoString(i));/创建数字按钮/

b1[i]setActionCommand(IntegertoString(i));

b1[i]addActionListener(this);

b1[i]setForeground(Colorblue);

}

String bs[]={"/","","-","C","+","="};

for(int i=0;i<b2length;i++){

b2[i]=new JButton(bs[i]);/创建 *** 作按钮/

b2[i]setActionCommand(bs[i]);

b2[i]addActionListener(this);

b2[i]setForeground(Colorred);

}

panel=new JPanel();

panelsetLayout(new GridLayout(4,5));

paneladd(b1[1]);

paneladd(b1[2]);

paneladd(b1[3]);

paneladd(b2[0]);

paneladd(b1[4]);

paneladd(b1[5]);

paneladd(b1[6]);

paneladd(b2[1]);

paneladd(b1[7]);

paneladd(b1[8]);

paneladd(b1[9]);

paneladd(b2[2]);

paneladd(b1[0]);

paneladd(b2[3]);

paneladd(b2[4]);

paneladd(b2[5]);

frameadd(tfShow,BorderLayoutNORTH);/将文本框放置在框架上方/

frameadd(panel,BorderLayoutCENTER);/将装有按钮组的panel放在框架的中心/

framesetDefaultCloseOperation(JFrameEXIT_ON_CLOSE);/设置框架窗口的默认窗口关闭 *** 作/

framesetVisible(true);/设置框架可见/

}

public double getDisplay(){/返回要显示的结果/

return number;

}

public void reDisplay(){/刷新文本域的内容/

tfShowsetText(""+getDisplay());

}

/对输入数字的处理/

public void numberProcess(int num){

if(isNumber&&num!=0){

String s1=IntegertoString(num);

String s2=IntegertoString((int)(thisnumber));

thisnumber=DoubleparseDouble(s2+s1);/对多位数字的处理/

}else{

thisnumber=num;

}

isNumber=true;/输入连续数字(即多位数字)时为真/

}

public void operationProcess(char operator){/根据输入的 *** 作符改变当前 *** 作符/

switch(operator){

case '-':

thisoperator='-';

break;

case '+':

thisoperator='+';

break;

case '':

thisoperator='';

break;

case '/':

thisoperator='/';

break;

}

result=number;

isNumber=false;/输入 *** 作符时表示输入连续数字的标记变量为假/

}

public void clear(){

number=0;

result=0;

}

public void equal(){/计算运算结果/

switch(operator){

case '-':

result=result-number;

break;

case '+':

result=result+number;

break;

case '':

result=resultnumber;

break;

case '/':

result=result/number;

break;

case ' ':

result=number;

break;

}

number=result; /把运算结果赋值给显示变量/

isNumber=false;

operator=' ';

}

public static void main(String args[]){

Calculator cal=new Calculator();/创建计算器/

}

public void actionPerformed(ActionEvent e){

String command=egetActionCommand();/获取按钮激发的 *** 作事件的命令名称/

char c=commandcharAt(0);/将按钮命令名称的第一个字符赋值给一个字符c/

switch(c){

case '1':

case '2':

case '3':

case '4':

case '5':

case '6':

case '7':

case '8':

case '9':

case '0':

int number=IntegerparseInt(command);

numberProcess(number);/输入数字的处理/

break;

case '+':

case '-':

case '':

case '/':

operationProcess(c);/算数运算符的处理/

break;

case '=':equal();break;/计算运算结果/

case 'C':clear();break;/清零/

}

reDisplay(); /在文本域中显示信息/

}

}

这是我做的一个计算器:运行截图

以上就是关于小程序-用户授权/授权后的信息读取流程全部的内容,包括:小程序-用户授权/授权后的信息读取流程、微信小程序--本地存储、小程序如往data里赋值数组等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/10161793.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-05
下一篇2023-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存