在Windows Azure中使用Titanium

azure titanium azure-storage

792 观看

3回复

15428 作者的声誉

我想在使用Titanium创建的应用程序中集成Windows Azure服务,就像我们使用eclipse for Android一样。我是Titanium的新手。请帮我提供一些有用的链接以便开始使用。

作者: Chintan Soni 的来源 发布者: 2013 年 7 月 26 日

回应 (3)


1

1824 作者的声誉

决定

我发现了这些:http//developer.appcelerator.com/question/149494/using-titanium-httpclient-to-access-windows-azure-mobile-services-rest-api

由于这是一个JavaScript库,它应该有所帮助。虽然可能有点旧。 http://azureblobstoragejs.codeplex.com/

作者: Martin 发布者: 29.07.2013 01:31

1

15428 作者的声誉

这就是我使用REST API获取数据的方式。

function getWebserviceURL() {

    return "https://database_name.azure-mobile.net/tables/";
}

function getCountryMasterData() {

    var xhr = Titanium.Network.createHTTPClient();
    xhr.onerror = function(e)
    {
        alert(e.toString);
    };
    xhr.onload = function() {
        alert(this.responseText);
    };
    var request_url = getWebserviceURL() + "table_name";
    xhr.open('GET', request_url);
    xhr.setRequestHeader("Accept","application/json");
    xhr.setRequestHeader("X-ZUMO-APPLICATION", "APP KEY");
    xhr.setRequestHeader("Host", "database_name.azure-mobile.net");
    xhr.send();
}
作者: Chintan Soni 发布者: 02.08.2013 12:57

0

1054 作者的声誉

编辑:

我为Windows Azure移动服务编写了一个Titanium SDK。请在此处查看:https//github.com/rfaisal/tiny-azuresdk-titanium

原答案:

首先登录facebook获取access_token(让我们称之为authorization_grant):

var fb=require('facebook');
fb.appid = 000000000000000; //replace this with your facebook app id
fb.permissions = ['email']; // add or remove permissions
fb.addEventListener('login', function(e) {
    if (e.success) {
        Ti.API.info('authorization_grant: '+fb.getAccessToken()); // prints to console, save for future use
    }
});
fb.authorize();

然后,从authorization_grant获取access_token(不是facebook,但是azure):

var authorization_grant = 'CAAHn34BO0R0BABtJyxdrZCQzakdmgJZBoQa0U...'; //saved from previous step
var xhr = Titanium.Network.createHTTPClient();
xhr.setTimeout(30000);
xhr.onload=function() {
    Ti.API.info('access_token: '+JSON.parse(this.responseText).authenticationToken); // save this for requesting protected resource
};
xhr.onerror= function() {
    Ti.API.info('Auth Failure response: '+this.responseText);
};
xhr.open('POST', 'https://my_resource_auth_server.azure-mobile.net/login/facebook');
xhr.setRequestHeader("Content-Type", "application/json");
xhr.setRequestHeader("Accept", "application/json");
xhr.send({
    "access_token" : authorization_grant
});

最后,通过access_token获取受保护资源:

var access_token = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCIsI...'; //saved from previous step
var xhr = Titanium.Network.createHTTPClient();
xhr.setTimeout(30000);
xhr.onload=function() {
    Ti.API.info('Protected Resource: '+this.responseText);
};
xhr.onerror= function() {
    Ti.API.info('Error response: '+this.responseText);
};
xhr.open('GET', 'https://my_resource_auth_server.azure-mobile.net/api/some_resource');
xhr.setRequestHeader("Content-Type", "application/json");
xhr.setRequestHeader("Accept", "application/json");
xhr.setRequestHeader("X-ZUMO-AUTH", access_token); // this is the magic line
xhr.send();

要获取需要应用程序级访问权限的资源,请添加名为X-ZUMO-APPLICATION的标头,并传递从Azure网站获取的应用程序密钥。同样,要访问需要管理员级别访问权限的资源,请将从Azure网站获取的Mobile Service主密钥作为X-ZUMO-MASTER标头传递。

这里遵循oAuth流程: 在此输入图像描述

最初发表的文章:https//rfaisalblog.wordpress.com/2014/03/01/oauth-flow-for-mobile-apps-with-an-external-identity-server/

作者: faisal 发布者: 01.03.2014 10:26
32x32