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:
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):
My Xcode Info tab and the rest of the source code are unchanged:
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)...
There are a few things wrong with your code.
ACAccountStore *accountStore
is going out of scope, it should be an instance variable. ACFacebookAudienceKey
, that's for publishing.ACFacebookPermissionsKey
as the properties you want are available by defaultWith 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.