Windows Azure Mobiles Services實現client的登入注冊

來源:互聯網
上載者:User

標籤:private   asc   res   opera   result   code   font   ice   方法   

下文僅僅是簡單實現,client以Android端的實現為例:

使用者表Account:

package com.microsoft.ecodrive.model;public class Account {@com.google.gson.annotations.SerializedName("id")public String id;@com.google.gson.annotations.SerializedName("username")public String username;@com.google.gson.annotations.SerializedName("password")public String password;@Overridepublic boolean equals(Object o) {return o instanceof Account && ((Account) o).id == id;}}

一、登入

1、服務端建立api:login,將其script替換例如以下:

exports.post = function(request, response) {    // Use "request.service" to access features of your mobile service, e.g.:    //   var tables = request.service.tables;    //   var push = request.service.push;    response.send(statusCodes.OK, { message : "post" });};exports.get = function(request, response) {    var myTable = request.service.tables.getTable(‘Account‘);    myTable.where({        username: request.param(‘username‘),        password:request.param(‘password‘)    }).read({        success: checkPermissions    });    function checkPermissions(results) {        if (results.length <= 0) {            response.send(statusCodes.BAD_REQUEST, ‘No such user.‘);        } else {            response.send(statusCodes.OK, { message : ‘sucess.‘ });         }    }};

2、client登入代碼例如以下:

private void login(final String name,final String pwd) {List<Pair<String, String>> parameters = new ArrayList<Pair<String, String>>();parameters.add(new Pair<String, String>("username", name));parameters.add(new Pair<String, String>("password", pwd));mClient.invokeApi("login","get", parameters, APIResult.class, new ApiOperationCallback<APIResult>() {        @Override        public void onCompleted(APIResult result, Exception exception, ServiceFilterResponse response) {        int code = response.getStatus().getStatusCode();Log.i(TAG, "StatusCode:"+code);if (exception == null) {showToast("Login sucess!");} else if (code==400) {showToast("Username or password is wrong, please try again.");}else{showToast(exception.getMessage());}        }    });}
註:因為是從項目中摘出來的。一些方法須要自己去初始化。

二、注冊

方法一:api方式

1、服務端建立api:register。將其script替換例如以下:

exports.post = function(request, response) {    var myTable = request.service.tables.getTable(‘Account‘);    myTable.where({        username: request.param(‘username‘)    }).read({        success: checkPermissions    });    function checkPermissions(results) {        if (results.length <= 0) {            var toInsert ={username:request.param(‘username‘),password:request.param(‘password‘)};            myTable.insert(toInsert, {                success: function () {                    response.send(statusCodes.OK, { message : ‘Register sucess!‘});                }            });        } else {            console.log(‘User %s Already exist.‘, request.param(‘username‘));            response.send(statusCodes.BAD_REQUEST, ‘Already exist.‘);        }    }};exports.get = function(request, response) {    response.send(statusCodes.OK, { message : ‘Hello World!‘ });};

2、client代碼例如以下:

//use apiprivate void register1(final String name,final String pwd) {List<Pair<String, String>> parameters = new ArrayList<Pair<String, String>>();parameters.add(new Pair<String, String>("username", name));parameters.add(new Pair<String, String>("password", pwd));mClient.invokeApi("register","post", parameters, APIResult.class, new ApiOperationCallback<APIResult>() {        @Override        public void onCompleted(APIResult result, Exception exception, ServiceFilterResponse response) {        int code = response.getStatus().getStatusCode();Log.i(TAG, "StatusCode:"+code);if (exception == null) {//SucessshowToast(result.message);} else if (code==400) {showToast(response.getContent());}else{showToast(exception.getMessage());}        }    });}

方法二:改動Accout表的insert的script。


1、替換Accout表的insert的script例如以下:

function insert(item, user, request) {    var permissionsTable = tables.getTable(‘Account‘);    permissionsTable.where({        username: item.username    }).read({        success: checkPermissions    });    function checkPermissions(results) {        if (results.length <= 0) {            request.execute();        } else {            console.log(‘User %s Already exist.‘, item.username);            request.respond(statusCodes.BAD_REQUEST, ‘User already exist‘);        }    }}

2、client代碼例如以下:

//use insertprivate void register(final String name,final String pwd) {Account account = new Account();account.username = name;account.password = pwd;mAccountTable.insert(account,new TableOperationCallback<Account>() {@Overridepublic void onCompleted(Account result, Exception exception,ServiceFilterResponse response) {int code = response.getStatus().getStatusCode();Log.i(TAG, "StatusCode:"+code);if (exception == null) {//SucessshowToast("Register sucess!");} else if (code==400) {showToast(response.getContent().replace("\"", ""));}else{showToast(exception.getMessage());}}});}

另,APIResult類例如以下:

package com.microsoft.ecodrive.model;import com.google.gson.annotations.SerializedName;public class APIResult {@SerializedName("count")    public int mCount;    public int getCount() {return mCount;}public String message;}


Windows Azure Mobiles Services實現client的登入注冊

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.