创建iOS会话

时间:2013-08-27 19:33:21

标签: ios facebook session cookies login

我正在为iOS开发一个moblie应用程序,您可以在其中登录Facebook并为移动应用程序授予权限。

因此,您会获得多个用户数据,例如他的令牌,名称......

问题出现在这里:我们也想登录我们的服务器。为此,我们必须创建一个会话(在用户连接到移动应用程序期间存在的临时对象。它是在登录完成时创建的,并在注销完成时被销毁)并且我不会知道如何创建它。这些是关于创建会话的技术规范:

1-创建新用户会话:

我有“路线”,方法是“发布”,公共“访问权限”,参数是:

PARAMS:
provider : string [facebook] uid : string
credentials : [
token: string
secret: string ]
description : text location : string email : string 
info : [
name : string nickname : string image : string email : string
]

2-要销毁,该方法为“get”,仅限注册用户使用。

一旦我获得了信息并且我已经获得了facebook登录数据,我的问题是:

我该怎么办?我到现在所做的是:

1-我写了“路线”地址:

NSURL *url=[NSURL URLWithString:@"http://mi_url.com/session.json"];

2-我创建了一个nsmutablestring来创建一个字符串作为会话要求的数据,以及之前获得的数据。

3-我创建了一个带有我想要的数据和结构的nsmutablestring作为模板,之后,我用我获得的值修改它(虽然这些可以通过多种方式完成)。 / p>

 NSMutableString * miJson= [NSMutableString stringWithString: @"{\"uid\": *0, \"credentials\":facebook {\"token\" : *1, \"secret\": *2}, \"provider\": \"facebook\", \"info\": {\"name\" : *3, \"nickname\": *4,\"image\" : *5, \"email\": *6}}"];

[miJson replaceCharactersInRange: [miJson rangeOfString: @"*0"]withString:@"100000389990235"];
            [miJson replaceCharactersInRange: [miJson rangeOfString: @"*1"]withString:_tokens];
            [miJson replaceCharactersInRange: [miJson rangeOfString: @"*2"]withString:_tokens];
            [miJson replaceCharactersInRange: [miJson rangeOfString: @"*5"]withString:@"https:\/\/graph.facebook.com\/*0\/picture"];
            [miJson replaceCharactersInRange: [miJson rangeOfString: @"*0"]withString:@"100000389990235"];

            [miJson replaceCharactersInRange: [miJson rangeOfString: @"*4"]withString:_name];
            [miJson replaceCharactersInRange: [miJson rangeOfString: @"*3"]withString:_name];
            [miJson replaceCharactersInRange: [miJson rangeOfString: @"*6"]withString:@"beruk@yahoo.es"];

//Here I have created a nsstring with the complete data:
NSString *post2=miJson;

4-在这里,我有两种方法可以登录我的服务器,即创建一个会话。

4.1-第一:

            NSData *postData = [post2 dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];

            NSString *postLength = [NSString stringWithFormat:@"%d", [postData length]];

            NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
            [request setURL:url];
            [request setHTTPMethod:@"POST"];
            [request setValue:postLength forHTTPHeaderField:@"Content-Length"];
            [request setValue:@"application/json" forHTTPHeaderField:@"Accept"];
            [request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
            [request setHTTPBody:postData];

4.2-秒(非常相似)

            NSData* postData= [post2 dataUsingEncoding:NSUTF8StringEncoding];
            NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
            [request setHTTPMethod:@"POST"];
            [request setValue:[NSString stringWithFormat:@"%d", postData.length] forHTTPHeaderField:@"Content-Length"];
            [request setValue:@"application/x-www-form-urlencoded charset=utf-8" forHTTPHeaderField:@"Content-Type"];
            [request setHTTPBody:postData];

            NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request
                                                                          delegate:self];

            [connection start];

我一直在观看大量的教程,以前的方式似乎是最好的,但也许我应该用afnetworking做一些事情,如下所示:

 NSString *urlsAsString=@"http://mi_url.com/sessions.json";
     NSURL *url= [NSURL URLWithString:urlsAsString];
     NSURLRequest *request=[NSURLRequest requestWithURL:url];

     AFJSONRequestOperation *operation =[AFJSONRequestOperation JSONRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {

     } failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON)
     {
     //ERROR
     NSLog(@" Error contacting por Facebook: %@", [error localizedDescription]);
     }];

     [operation start];

或者,我应该使用asinhttprequest吗?也许与nuserdefault?或者我应该将“post2”数据(它是NSString)提供给其他数据类型(Json,...)?

此外,我想我也应该开发cookie来控制数据,但我不知道如何在这段代码中引入它们。事实上,如果没有cookie,它会工作吗?我知道必须完成它们的特定功能(保存,加载......),但是,它们必须在创建会话的同时生成还是紧接在之后生成?

现在,对我来说最重要的是实现创建会话,并且服务器提供200作为回报。这意味着“ok”,用户被正确记录。

但是,怎么知道呢?

在几个教程中,描述了在“所有输出”中编写“po [response statusCode]”,在代码中设置断点后,它会显示它,但是当我尝试时,我只能得到没有响应。

如何检查服务器是否回答会话创建请求?或者,它会给我一个饼干吗?如果确实如此,我该怎么办呢?

我知道这是一个漫长而复杂的问题(特别长),而且我的英语不太好,但我已经尝试了好几周而且我很绝望。

非常感谢!!

0 个答案:

没有答案