iosiphonefacebookfacebook-ios-sdksocial-framework

Fetching basic information (id, first_name) from Facebook by using Social Framework - source code and screenshots attached


For what would be a word game later I am trying to fetch very basic information about a player by using Social framework:

(i.e. nothing sensitive like email and I don't use Facebook iOS SDK).

So in Xcode 5.0.2 I create a blank single view app for iPhone and add Social.framework to the Build phases tab.

Then I add the following code to the ViewController.m:

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

#define FB_APP_ID @"432298283565593"
//#define FB_APP_ID @"262571703638"

@interface ViewController ()
@property (strong, nonatomic) ACAccountStore *accountStore;
@end

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];

    NSLog(@"Facebook is available: %d", [SLComposeViewController isAvailableForServiceType:SLServiceTypeFacebook]);

    [self getMyDetails];
}

- (void) getMyDetails {
    if (!_accountStore) {
        _accountStore = [[ACAccountStore alloc] init];
    }

    ACAccountType *facebookAccountType = [_accountStore
                                        accountTypeWithAccountTypeIdentifier: ACAccountTypeIdentifierFacebook];
    NSDictionary *options = @{
                              ACFacebookAppIdKey: FB_APP_ID,
                              ACFacebookPermissionsKey: @[@"basic_info"]};

    [_accountStore requestAccessToAccountsWithType:facebookAccountType
                                           options:options
                                        completion:^(BOOL granted, NSError *error)
    {
        if (granted) {
            NSLog(@"Basic access granted");
        } else {
            NSLog(@"Basic access denied %@", error);
        }
    }];
}

@end

And create a new Facebook app for which I specify de.afarber.MyFacebook as the iOS Bundle ID:

enter image description here

Finally at Apple iTunes Connect I create a new App ID and then a new app (with a dummy icon and even 2 iPhone screenshots attached):

enter image description here

enter image description here

My Xcode Info tab and the rest of the source code are unchanged:

enter image description here

UPDATE 2:

I have updated the source code as suggested by helpful comments, thank you.

Also, I have another Facebook game, which works well (since 1-2 years) for an Adobe AIR desktop and mobile apps (but now I try to learn native iOS programming) and I have tried its id 262571703638 without success.

And I have added FacebookAppID to MyFacebook-Info.plist as suggested by Mohit10 (it seems to me that it is needed for Facebook SDK only, while I try to use Social Framework - but it can't hurt...)

Now I get the debugger output:

2013-12-31 11:08:07.584 MyFacebook[3009:70b] Facebook is available: 1
2013-12-31 11:08:07.964 MyFacebook[3009:3903] Basic access granted

I just need to figure out, how to fetch the id, first_name, gender, location now (and if basic_info is really needed for that)...


Solution

  • There are a few things wrong with your code.

    With these fixes your code still doesn't work for me, although it does work for my App ID. I get the the following error:

    "The Facebook server could not fulfill this access request: Invalid application 432298283565593" UserInfo=0x1d5ab670 {NSLocalizedDescription=The Facebook server could not fulfill this access request: Invalid application 432298283565593}
    

    Looks like there's something wrong with your app's Facebook configuration.

    The only difference I can see is that my app is sandboxed and I'm logged in using my developer account. Good luck.