基本上现在的每一款app都有登录功能。那也就少不了注册,找回密码等操作。

今天要说的就是初学者可以使用parse做为后台的服务器来进行一系列的操作,等以后工作的时候可以用公司的服务器。

注册用户

BmobUser *bUser = [[BmobUser alloc] init];
[bUser setUserName:@"小明"];//必填
[bUser setPassword:@""];//必填
[bUser setObject:@ forKey:@"age"];//选填
[bUser setEmail:@"123456789@qq.com]"//必填
[bUser signUpInBackgroundWithBlock:^ (BOOL isSuccessful, NSError *error){
if (isSuccessful){
NSLog(@"Sign up successfully");
} else {
NSLog(@"%@",error);
}
}];
  • 有些时候你可能需要在用户注册时发送一封邮件,以确认用户邮箱的真实性。这时,你只需要登录自己的应用管理后台,在应用设置->邮件设置(下图)中把“邮箱验证”功能打开,Bmob云后端就会在用户注册时自动发动一封验证给用户。
  • username字段是大小写敏感的字段,如果你希望应用的用户名不区分大小写,请在注册登录时进行大小写的统一转换。

登录成功

[BmobUser loginWithUsernameInBackground:@"小明"
password:@"" block:^(BmobUser *user, NSError *error) {
if (user) {
[self showMessage:@"登录成功"];
} if (error) {
[self showMessage:@"用户名或者密码错误"];
}
}];];

获取当前用户

BmobUser *bUser = [BmobUser getCurrentObject];
if (bUser) {
//进行操作
}else{
//对象为空时,可打开用户注册界面
}
当然,你也可以用如下的方法清除缓存用户对象: [BmobUser logout];

更新用户资料

BmobUser *bUser = [BmobUser getCurrentUser];
//更新number为30
[bUser setObject:@ forKey:@"number"];
[bUser updateInBackgroundWithResultBlock:^(BOOL isSuccessful, NSError *error) {
NSLog(@"error %@",[error description]);
}];

在更新用户信息时,如果用户邮箱有变更并且在管理后台打开了邮箱验证选项的话,Bmob云后端同样会自动发动一封邮件验证信息给用户。

旧密码重置密码

    BmobUser *user = [BmobUser getCurrentUser];
[user updateCurrentUserPasswordWithOldPassword:@"old password" newPassword:@"new password" block:^(BOOL isSuccessful, NSError *error) {
if (isSuccessful) {
//用新密码登录
[BmobUser loginInbackgroundWithAccount:@"name" andPassword:@"new password" block:^(BmobUser *user, NSError *error) {
if (error) {
NSLog(@"login error:%@",error);
} else {
NSLog(@"user:%@",user);
}
}];
} else {
NSLog(@"change password error:%@",error);
}
}];

邮箱重置密码

[BmobUser requestPasswordResetInBackgroundWithEamil:@"xxxx@qq.com"];

密码重置流程如下:

  1. 用户输入他们的电子邮件,请求重置自己的密码。
  2. Bmob向他们的邮箱发送一封包含特殊的密码重置连接的电子邮件。
  3. 用户根据向导点击重置密码连接,打开一个特殊的Bmob页面,根据提示,他们可以输入一个新的密码。
  4. 用户的密码已被重置为新输入的密码。

邮箱验证

BmobUser *user = [BmobUser getCurrentUser];
//应用开启了邮箱验证功能
if ([user objectForKey:@"emailVerified"]) {
//用户没验证过邮箱
if (![[user objectForKey:@"emailVerified"] boolValue]) {
[user verifyEmailInBackgroundWithEmailAddress:@"xxxxxxxxxx"];
}
}

手机注册登录

一键注册登录

[BmobUser signOrLoginInbackgroundWithMobilePhoneNumber:mobilePhoneNumber andSMSCode:smsCode block:^(BmobUser *user, NSError *error) {
if (user) {
NSLog(@"%@",user);
} else {
NSLog(@"%@",error);
}
}];

如果希望在用手机注册时为用户添加密码或者其它信息,可以使用以下代码实现:

    BmobUser *buser = [[BmobUser alloc] init];
buser.mobilePhoneNumber = @"";
buser.password = @"";
buser.email = @"xxx@gmail.com"
[buser signUpOrLoginInbackgroundWithSMSCode:@"6位验证码" block:^(BOOL isSuccessful, NSError *error) {
if (error) {
NSLog(@"%@",error);
} else {
BmobUser *user = [BmobUser getCurrentUser];
NSLog(@"%@",[BmobUser getCurrentUser]);
}
}];

帐号密码登录

    [BmobUser loginInbackgroundWithAccount:account andPassword:password block:^(BmobUser *user, NSError *error) {
if (user) {
NSLog(@"%@",user);
} else {
NSLog(@"%@",error);
}
}];

手机号验证码登录

    [BmobUser loginInbackgroundWithMobilePhoneNumber:mobilePhoneNumber andSMSCode:smsCode block:^(BmobUser *user, NSError *error) {
if (user) {
NSLog(@"%@",user);
} else {
NSLog(@"%@",error);
}
}];

手机验证码重置密码

    [BmobUser resetPasswordInbackgroundWithSMSCode:smsCode andNewPassword:newPassword block:^(BOOL isSuccessful, NSError *error) {
if (isSuccessful) {
NSLog(@"%@",@"重置密码成功");
} else {
NSLog(@"%@",error);
}
}];

绑定手机号

    //验证
[BmobSMS verifySMSCodeInBackgroundWithPhoneNumber:mobilePhoneNumber andSMSCode:smsCode resultBlock:^(BOOL isSuccessful, NSError *error) {
if (isSuccessful) {
//修改绑定手机
BmobUser *buser = [BmobUser getCurrentUser];
buser.mobilePhoneNumber = mobilePhoneNumber;
[buser setObject:[NSNumber numberWithBool:YES] forKey:@"mobilePhoneNumberVerified"];
[buser updateInBackgroundWithResultBlock:^(BOOL isSuccessful, NSError *error) {
if (isSuccessful) {
NSLog(@"%@",buser);
} else {
NSLog(@"%@",error);
}
}]; } else {
NSLog(@"%@",error);
}
}];

请求发送短信内容

    [BmobSMS requestSMSInbackgroundWithPhoneNumber:@"phoneNumber" Content:@"您的XX服务还有XX时间到期,请及时续费。" andSendTime:@"2015-07-01 10:59:00" resultBlock:^(int number, NSError *error) {
if (error) {
NSLog(@"%@",error);
} else {
NSLog(@"smsId:%d",number);
}
}];

获取短信验证码

    //请求验证码
[BmobSMS requestSMSCodeInBackgroundWithPhoneNumber:mobilePhoneNumber andTemplate:@"test" resultBlock:^(int number, NSError *error) {
if (error) {
NSLog(@"%@",error);
} else {
//获得smsID
NSLog(@"sms ID:%d",number);
}
}];

验证短信验证码

    //验证
[BmobSMS verifySMSCodeInBackgroundWithPhoneNumber:mobilePhoneNumber andSMSCode:smsCode resultBlock:^(BOOL isSuccessful, NSError *error) {
if (isSuccessful) {
NSLog(@"%@",@"验证成功,可执行用户请求的操作");
} else {
NSLog(@"%@",error);
}
}]; }

iOS开发之基于parse的登录注册的更多相关文章

  1. 基于HTML5手机登录注册表单代码

    分享一款基于HTML5手机登录注册表单代码.这是一款鼠标点击注册登录按钮弹出表单,适合移动端使用.效果图如下: 在线预览   源码下载 实现的代码. html代码: <div class=&qu ...

  2. iOS开发——高级篇——Parse 教程:网络后台基础

    本教程已针对Swift, iOS 8.3, Xcode 6.3及最新的Parse SDK(1.7.1版本)更新. 网络后台支持可以为你的App添加许多崭新的功能:不论是数据同步,社交分享,还是云端存储 ...

  3. 那些年一起用过的iOS开发利器之Parse

    阅读此文章需要对Objective-C和iOS有一定的了解,完全没有基础的朋友请先阅读<让不懂编程的人爱上iPhone开发>系列教程. 什么是后台服务(back-end service)? ...

  4. iOS开发---集成ShareSDK实现第三方登录、分享、关注等功能。

    (1)官方下载ShareSDK IOS 2.9.6,地址:http://sharesdk.mob.com/Download (2)根据实际情况,引入相关的库,参考官方文档. (3)在项目的AppDel ...

  5. iOS开发笔记 基于wsdl2objc调用asp.net WebService

    1.准备 先下载待会要用到的工具 WSDL2ObjC-0.6.zip WSDL2ObjC-0.7-pre1.zip 我用的是WSDL2ObjC-0.6.zip 1.1搭建asp.net WebServ ...

  6. iOS开发实战-基于SpriteKit的FlappyBird小游戏

    写在前面 最近一直在忙自己的维P恩的事情 公司项目也是一团乱 于是...随手找了个游戏项目改了改就上线了,就当充数了. SpriteKit简介 SpriteKit是iOS 7之后苹果推出的2D游戏框架 ...

  7. 李洪强iOS开发之基于彻底解耦合的实验性iOS架构

    基于彻底解耦合的实验性iOS架构   这周我决定做一个关于彻底解耦合的应用架构的实验.我想探究的主题是: “如果所有的应用内通讯都通过一个事件流来完成会怎么样?” 我构造了一个待办事项应用,因为这是我 ...

  8. iOS 开发之基于JWT的Token认证机制及解析

    在移动端和服务端通信中,一般有两种认证方式:token 和 session. 1.session/cookie 认证机制: 在服务端创建一个Session对象,同时在客户端的浏览器端创建一个Cooki ...

  9. IOS开发笔记 - 基于wsdl2objc调用webservice

    为了方便在ios下调用webserivce,找来了wsdl2objc这样一个开源的框架来解析webservice方便在ios下引用. 下面做个小例子. 1.首先是用Asp.net搭建一个测试的webs ...

随机推荐

  1. JS知识点概况

    1.什么是JavaScript a)   JavaScript 被设计用来向 HTML 页面添加交互行为. b)   JavaScript 是一种脚本语言(脚本语言是一种轻量级的编程语言). c)   ...

  2. Android app去应用市场评分功能

    因为android市场很多,去各个应用市场评分的功能却不是很难实现. private void gotoRate(){ Uri uri = Uri.parse("market://detai ...

  3. Android集成科大讯飞SDK语音听写及语音合成功能实现

    前言 现在软件设计越来越人性化.智能化.一些常见的输入都慢慢向语音听写方向发展,一些常见的消息提示都向语音播报发展.所以语音合成和语音听写是手机软件开发必不可少的功能.目前国内这方面做的比较好的应该是 ...

  4. iOS 生成.a文件

    一.新建一个工程,选择Cocoa Touch Static Library. 二. 三. 四. 五. 六. 七. 八. 九. 十. 十一. 十二. 十三.打开终端,输入以下命令将真机和模拟器中的.a合 ...

  5. spring 配置和实例

    Spring 是一个开源框架.Spring 为简化企业级应用开发而生. 使用 Spring 可以使简单的 JavaBean 实现以前只有 EJB 才能实现的功能.Spring 是一个 IOC(DI) ...

  6. jquery 判断多组radio checkbox是否选中

    最近要做一个问卷调查的小页面,需要判断用户是否每项都有选择,如果每个都挨个判断很苦逼,所以网上搜了搜,自己也总结了一下,写了一段小代码~哈哈,水平有限大家见谅.html代码就不上了,N多单选和多选框就 ...

  7. windows系统npm如何升级自身

    其实使用npm升级各种插件是很方便的,比如我想升级express框架,使用如下命令 npm update express 如果你的express是全局安装,则 npm update -g expres ...

  8. Android系统信息

    前提:获取的都是AndroidMainfest.xml下的信息 一.PackageManager 负责管理所有已安装的App 二.ActivityInfo 封装了Mainifest中的<acti ...

  9. px,dp,dip,sp,in,mm,pt详细分析

    px,dp,dip,sp,in,mm,pt详细分析 px   :(pixels),屏幕的像素点,不同的设备显示效果相同,一般我们HVGA代表320x480像素,这个用的比较多. dip  :(devi ...

  10. JavaBean之属性必须遵循命名规范

    JavaBean中存在一些属性,今天写了一个Jsp的小例子.把Bean中的属性命名规范搞错了,具体的说属性的首字母大写了. 于是乎Jsp中读取属性时总是报错. javax.el.PropertyNot ...