Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 导入SimpleAuth ForSquareWeb-9生成时错误_Objective C_Xcode_Api_Cocoapods - Fatal编程技术网

Objective c 导入SimpleAuth ForSquareWeb-9生成时错误

Objective c 导入SimpleAuth ForSquareWeb-9生成时错误,objective-c,xcode,api,cocoapods,Objective C,Xcode,Api,Cocoapods,我对objective-c比较陌生,对swift了解不多 我一直在尝试制作一个将实现simpleAuth的应用程序,以便创建到ForSquareWebAPI的链接 我正在使用cocoapods,并已将SimpleAuth相关文件导入到我的产品中 除了SimpleAuth目标,特别是SimpleAuthForSquareWebProvider.m文件之外,每个文件似乎都很好。这就是文件本身的样子 // // SimpleAuthFoursquareWebProvider.m // Simple

我对objective-c比较陌生,对swift了解不多

我一直在尝试制作一个将实现simpleAuth的应用程序,以便创建到ForSquareWebAPI的链接

我正在使用cocoapods,并已将SimpleAuth相关文件导入到我的产品中

除了SimpleAuth目标,特别是SimpleAuthForSquareWebProvider.m文件之外,每个文件似乎都很好。这就是文件本身的样子

//
//  SimpleAuthFoursquareWebProvider.m
//  SimpleAuth
//
//  Created by Julien Seren-Rosso on 23/01/2014.
//  Copyright (c) 2014 Byliner, Inc. All rights reserved.
//

#import "SimpleAuthFoursquareWebProvider.h"
#import "SimpleAuthFoursquareWebLoginViewController.h"

#import <ReactiveCocoa/ReactiveCocoa.h>
#import "UIViewController+SimpleAuthAdditions.h"

@implementation SimpleAuthFoursquareWebProvider

#pragma mark - SimpleAuthProvider

+ (NSString *)type {
return @"foursquare-web";
}

+ (NSDictionary *)defaultOptions {

// Default present block
SimpleAuthInterfaceHandler presentBlock = ^(UIViewController *controller) {
    UINavigationController *navigation = [[UINavigationController alloc] initWithRootViewController:controller];
    navigation.modalPresentationStyle = UIModalPresentationFormSheet;
    UIViewController *presented = [UIViewController SimpleAuth_presentedViewController];
    [presented presentViewController:navigation animated:YES completion:nil];
};

// Default dismiss block
SimpleAuthInterfaceHandler dismissBlock = ^(id controller) {
    [controller dismissViewControllerAnimated:YES completion:nil];
};

NSMutableDictionary *options = [NSMutableDictionary dictionaryWithDictionary:[super defaultOptions]];
options[SimpleAuthPresentInterfaceBlockKey] = presentBlock;
options[SimpleAuthDismissInterfaceBlockKey] = dismissBlock;
return options;
}

- (void)authorizeWithCompletion:(SimpleAuthRequestHandler)completion {
[[[self accessToken]
 flattenMap:^RACStream *(NSString *response) {
     NSArray *signals = @[
         [self accountWithAccessToken:response],
         [RACSignal return:response]
     ];
     return [self rac_liftSelector:@selector(dictionaryWithAccount:accessToken:) withSignalsFromArray:signals];
 }]
 subscribeNext:^(NSDictionary *response) {
     completion(response, nil);
 }
 error:^(NSError *error) {
     completion(nil, error);
 }];
}

#pragma mark - Private

- (RACSignal *)accessToken {
return [RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscriber) {
    dispatch_async(dispatch_get_main_queue(), ^{
        SimpleAuthFoursquareWebLoginViewController *login = [[SimpleAuthFoursquareWebLoginViewController alloc] initWithOptions:self.options];
        login.completion = ^(UIViewController *login, NSURL *URL, NSError *error) {
            SimpleAuthInterfaceHandler dismissBlock = self.options[SimpleAuthDismissInterfaceBlockKey];
            dismissBlock(login);

            // Parse URL
            NSString *fragment = [URL fragment];
            NSDictionary *dictionary = [CMDQueryStringSerialization dictionaryWithQueryString:fragment];
            NSString *token = dictionary[@"access_token"];

            // Check for error
            if (![token length]) {
                [subscriber sendError:error];
                return;
            }

            // Send completion
            [subscriber sendNext:token];
            [subscriber sendCompleted];
        };

        SimpleAuthInterfaceHandler block = self.options[SimpleAuthPresentInterfaceBlockKey];
        block(login);
    });
    return nil;
}];
}


- (RACSignal *)accountWithAccessToken:(NSString *)accessToken {
return [RACSignal createSignal:^RACDisposable *(id<RACSubscriber> subscriber) {
    NSDictionary *parameters = @{ @"oauth_token" : accessToken };
    NSString *query = [CMDQueryStringSerialization queryStringWithDictionary:parameters];
    NSString *URLString = [NSString stringWithFormat:@"https://api.foursquare.com/v2/users/self?v=20140210&%@", query];
    NSURL *URL = [NSURL URLWithString:URLString];
    NSURLRequest *request = [NSURLRequest requestWithURL:URL];
    [NSURLConnection sendAsynchronousRequest:request queue:self.operationQueue
     completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
         NSIndexSet *indexSet = [NSIndexSet indexSetWithIndexesInRange:NSMakeRange(200, 99)];
         NSInteger statusCode = [(NSHTTPURLResponse *)response statusCode];
         if ([indexSet containsIndex:statusCode] && data) {
             NSError *parseError = nil;
             NSDictionary *dictionary = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&parseError];
             if (dictionary) {
                 [subscriber sendNext:dictionary];
                 [subscriber sendCompleted];
             }
             else {
                 [subscriber sendError:parseError];
             }
         }
         else {
             [subscriber sendError:connectionError];
         }
     }];
    return nil;
}];
}


- (NSDictionary *)dictionaryWithAccount:(NSDictionary *)account accessToken:(NSString *)accessToken {
NSMutableDictionary *dictionary = [NSMutableDictionary new];
NSDictionary *userData = account[@"response"][@"user"];

// Provider
dictionary[@"provider"] = [[self class] type];

// Credentials
dictionary[@"credentials"] = @{
                               @"token" : accessToken
                               };

// User ID
dictionary[@"uid"] = userData[@"id"];

// Raw response
dictionary[@"extra"] = @{
                         @"raw_info" : userData
                         };

// User info
NSMutableDictionary *user = [NSMutableDictionary new];
if (userData[@"contact"][@"email"]) {
    user[@"email"] = userData[@"contact"][@"email"];
}

if (userData[@"firstName"]) {
    user[@"first_name"] = userData[@"firstName"];
}

if (userData[@"lastName"]) {
    user[@"last_name"] = userData[@"lastName"];
}

user[@"name"] = [NSString stringWithFormat:@"%@ %@", user[@"first_name"], user[@"last_name"]];

user[@"gender"] = userData[@"gender"];

if ([userData[@"photo"] isKindOfClass:NSDictionary.class]) {
    user[@"image"] = [NSString stringWithFormat:@"%@500x500%@", userData[@"photo"][@"prefix"], userData[@"photo"][@"suffix"]];
} else if ([userData[@"photo"] isKindOfClass:NSString.class]) {
    user[@"image"] = userData[@"photo"];
}

if (userData[@"photo"]) {
    user[@"photo"] = userData[@"photo"];
}
if (userData[@"homeCity"]) {
    NSString *homecity = [[userData[@"homeCity"] componentsSeparatedByString:@","] firstObject];
    user[@"location"] = homecity;
}
user[@"urls"] = @{
                  @"Foursquare" : [NSString stringWithFormat:@"https://foursquare.com/user/%@", userData[@"id"]],
                  };
dictionary[@"info"] = user;

return dictionary;
}


@end
//
//SimpleAuthFoursquareWebProvider.m
//单纯形
//
//朱利安·塞伦·罗索于2014年1月23日创作。
//版权所有(c)2014 Byliner,Inc.保留所有权利。
//
#导入“SimpleAuthFoursquareWebProvider.h”
#导入“SimpleAuthFoursquareWebLoginViewController.h”
#进口
#导入“UIViewController+SimpleAuthAdditions.h”
@SimpleAuthFoursquareWebProvider的实现
#pragma标记-SimpleAuthProvider
+(NSString*)类型{
返回@“foursquare web”;
}
+(NSDictionary*)默认选项{
//默认当前块
SimpleAuthInterfaceHandler presentBlock=^(UIViewController*控制器){
UINavigationController*导航=[[UINavigationController alloc]initWithRootViewController:controller];
navigation.modalPresentationStyle=UIModalPresentationFormSheet;
UIViewController*presented=[UIViewController SimpleAuth_presentedViewController];
[当前视图控制器:导航动画:是完成:无];
};
//默认关闭块
SimpleAuthInterfaceHandler dismissBlock=^(id控制器){
[控制器解除视图控制器激活:是完成:无];
};
NSMutableDictionary*选项=[NSMutableDictionary Dictionary WithDictionary:[super-defaultOptions]];
选项[SimpleAuthPresentInterfaceBlockKey]=presentBlock;
选项[SimpleAuthDismissionInterfaceBlockKey]=dismissBlock;
返回选项;
}
-(void)authorizeWithCompletion:(SimpleAuthRequestHandler)completion{
[[self-accessToken]
扁平映射:^RACStream*(NSString*响应){
NSArray*信号=@[
[self accountWithAccessToken:响应],
[信号返回:响应]
];
返回[self rac_liftSelector:@selector(dictionaryWithAccount:accessToken:)和SignalsFromArray:signals];
}]
subscribeNext:^(NSDictionary*响应){
完成(答复,无);
}
错误:^(N错误*错误){
完成(无,错误);
}];
}
#布拉格马克-私人
-(RACSignal*)访问令牌{
返回[RACSignal createSignal:^RACSignal*(id订户){
dispatch\u async(dispatch\u get\u main\u queue()^{
SimpleAuthFoursquareWebLoginViewController*登录=[[SimpleAuthFoursquareWebLoginViewController alloc]initWithOptions:self.options];
login.completion=^(UIViewController*登录,NSURL*URL,NSError*错误){
SimpleAuthDismissionHandler dismissBlock=self.options[SimpleAuthDismissionInterfaceBlockKey];
dismissBlock(登录);
//解析URL
NSString*片段=[URL片段];
NSDictionary*dictionary=[CMDQueryStringSerialization dictionary WithQueryString:fragment];
NSString*token=字典[@“访问令牌”];
//检查错误
如果(![token length]){
[订户发送错误:错误];
返回;
}
//发送完成
[订户发送下一个:令牌];
[用户发送完成];
};
SimpleAuthInterfaceHandler块=self.options[SimpleAuthPresentInterfaceBlockKey];
阻止(登录);
});
返回零;
}];
}
-(RACSignal*)accountWithAccessToken:(NSString*)accessToken{
返回[RACSignal createSignal:^RACSignal*(id订户){
NSDictionary*参数=@{@“oauth_令牌”:accessToken};
NSString*query=[CMDQueryStringSerialization queryStringWithDictionary:parameters];
NSString*URLString=[NSString stringWithFormat:@]https://api.foursquare.com/v2/users/self?v=20140210&%@“,查询];
NSURL*URL=[NSURL URLWithString:URLString];
NSURLRequest*request=[nsurlRequestRequestWithURL:URL];
[NSURLConnection sendAsynchronousRequest:请求队列:self.operationQueue
completionHandler:^(NSURLResponse*响应,NSData*数据,NSError*connectionError){
NSIndexSet*indexSet=[NSIndexSet indexetwithindexesinrange:NSMakeRange(200,99)];
NSInteger状态代码=[(NSHTTPURLRRESPONSE*)响应状态代码];
if([indexSet containsIndex:statusCode]&&data){
NSError*parseError=nil;
NSDictionary*dictionary=[NSJSONSerialization JSONObject WithData:数据选项:kNilOptions错误:&parseError];
如果(字典){
[订阅方发送下一步:字典];
[用户发送完成];
}
否则{
[订户发送错误:parseError];
}
}
否则{
[订户发送错误:connectionError];
}
}];
返回零;
}];
}
-(NSDictionary*)Dictionary WithAccount:(NSDictionary*)account accessToken:(NSString*)accessToken{
NSMutableDictionary*dictionary=[NSMutableDictionary new];
NSDictionary*userData=帐户[@“响应”][@“用户”];
//提供者
字典[@“提供者”]=[[self class]类型];
//证书
字典[@“凭证”]=@{
@“令牌”:accessToken
};
//用户ID
字典[@“uid”]=userData[@“id”];
//原始响应
字典[@“额外”]=@{
@“原始信息”:用户数据
};
//用户信息
NSMutableDictionary*用户=[NSMutableDictionary新建];
如果(用户数据[@“联系”][@“电子邮件”]){
用户[@“电子邮件”]=userData[@“联系人”][@“电子邮件”];
}
if(userData[@“firstName]”){
用户[@“first_name”]=userData[@“firstName”];
}
if(userData[@“lastName]”){
用户[@“last_name”]=userData[@“lastName”];
}
用户[@“name”]=[NSString stringWithFormat:@“%@%@”、用户[@“first_name”]、用户[@“last_name”];
用户[@“性别”