1

我正在尝试构建简单的原型,在其中将一些文本发布到我的 Facebook 帐户。我已经阅读了 ios 6 facebook 集成文档并提出了以下代码。一切似乎都工作正常,直到我在方法 postTextToFacebook 中创建 SLRequest 对象并尝试使用处理程序块执行 performRequestWithHandler 的最后一个块。控制永远不会在处理程序块内进行。我假设在这种情况下 performRequestWithHandler 调用不成功。有人成功完成了吗?这是供您参考的代码。

#import <Social/Social.h>
#import "ViewController.h"

@implementation ViewController
@synthesize facebookAccount;
@synthesize accountStore;
@synthesize textToPost;

- (void)viewDidLoad
{
    [super viewDidLoad];


}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];

}


-(IBAction) postToFacebook:(id)sender
{
    self.statusLabel.text = @"Logging in ...";
    if(self.accountStore == nil)
    {
        self.accountStore = [[ACAccountStore alloc] init];
    }

    ACAccountType *facebookAccountType = [self.accountStore enter code hereaccountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierFacebook];

    NSMutableDictionary *myOptions = [NSMutableDictionary dictionaryWithObjectsAndKeys:
                                    @"172197712918906", ACFacebookAppIdKey,
                                    [NSArray arrayWithObjects:@"email", @"user_about_me", @"user_likes", nil], ACFacebookPermissionsKey, ACFacebookAudienceFriends, ACFacebookAudienceKey, nil];
    [self.accountStore requestAccessToAccountsWithType:facebookAccountType options:myOptions completion:^(BOOL granted, NSError *error){
        __block NSString *statusText;
        if(granted)
        {
            NSArray *accounts = [self.accountStore accountsWithAccountType:facebookAccountType];
            self.facebookAccount = [accounts lastObject];
            [myOptions setObject:[NSArray arrayWithObjects:@"publish_stream", nil] forKey:ACFacebookPermissionsKey];
            [self.accountStore requestAccessToAccountsWithType:facebookAccountType options:myOptions completion:^(BOOL granted, NSError *error) {
                 __block NSString *statusText1;
                if(granted && error == nil)
                {
                    NSArray *accounts = [self.accountStore accountsWithAccountType:facebookAccountType];
                    self.facebookAccount = [accounts lastObject];
                    [self postTextToFacebook];
                    statusText1 = @"Text Posted.";
                }
                else{
                    statusText1 = @"Publish Failed.";
                }

                dispatch_async(dispatch_get_main_queue(), ^{
                    self.statusLabel.text = statusText1;
                });
            }];
        }
        else{
            statusText = @"Login Failed.";
            NSLog(@"Error = %@",error);
        }


    }];

}

-(void) postTextToFacebook
{
    NSDictionary *parameters = @{@"message":self.textToPost.text};
    NSURL *feedURL = [NSURL URLWithString:@"https://graphs.facebook.com/me/feed"];

    SLRequest *request = [SLRequest requestForServiceType:SLServiceTypeFacebook requestMethod:SLRequestMethodPOST URL:feedURL parameters:parameters];

    request.account = self.facebookAccount;

    [request performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error) {        
        NSLog(@"Facebook request received, status code %d", urlResponse.statusCode);
        NSString *response = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding];
        NSLog(@"Response data: %@", response);

        //handle errors
        if(error == nil)
        {
            dispatch_async(dispatch_get_main_queue(), ^{
                self.statusLabel.text = @"text posted to facebook";
            });
        }

    }];
}

@end
4

1 回答 1

2

你的网址应该是

https://graph.facebook.com/me/feed

代替

https://graphs.facebook.com/me/feed

我遇到了同样的问题,并且出现了 NSURLErrorDomain -1003 错误。

于 2013-02-07T09:52:24.923 回答