我的目标:
由于facebook直接内置于iOS 6,我想利用登录凭据 从iOS上的设置屏幕,以便没有人需要输入他们的用户名/密码 在我的应用程序中。
我希望我的用户直接跳转到facebook上的权限对话框。
有人告诉我利用默认对象来访问这些登录凭据:
thzAppDelegate *delegate = (thzAppDelegate *)[[UIApplication sharedApplication] delegate];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
if([defaults objectForKey:@"FBAccessTokenKey"]
&& [defaults objectForKey:@"FBExpirationDateKey"]){
[delegate facebook].accessToken = [defaults objectForKey:@"FBAccessTokenKey"];
[delegate facebook].expirationDate = [defaults objectForKey:@"FBExpirationDateKey"];
}
但这不起作用:即使我重置我的模拟器,在iOS上的设置中添加我的用户名传递,我仍然在我的APP中获得一个登录屏幕,但我只期望权限。
我还在delegate.m中添加了推荐的行:
#pragma mark Facebook
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
return [self.facebook handleOpenURL:url];
}
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
return [self.facebook handleOpenURL:url];
}
我不想在登录时打扰我的用户。
我做错了什么?
答案 0 :(得分:1)
我建议您查看Accounts.framework
和Social.frameworks
- 前者可让您通过ACAccount
类访问用户的社交帐户,然后您可以使用该类创建SLRequest
}对象来运行你的社交请求。
如果您只是想在墙上分享内容,您可以完全绕过这些步骤并使用SLComposeViewController
,它提供了通过Facebook,Twitter或微博分享媒体的模式视图。 Apple提供了所有这些类的文档和示例代码。
答案 1 :(得分:1)
您使用的是facebook sdk代码。你想使用这样的东西,利用iOS 6社交框架。
#import <Accounts/Accounts.h>
#import <Social/Social.h>
ACAccountStore *accountStore = [[[ACAccountStore alloc] init] autorelease];
ACAccountType * facebookAccountType = [accountStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierFacebook];
NSArray * permissions = @[@"publish_stream"];
NSMutableDictionary *dict = [[NSMutableDictionary alloc]initWithObjectsAndKeys:@"whateverYourFacebookKeyIs",ACFacebookAppIdKey,permissions,ACFacebookPermissionsKey,ACFacebookAudienceFriends,ACFacebookAudienceKey, nil];
[accountStore requestAccessToAccountsWithType:facebookAccountType options:dict completion:^(BOOL granted, NSError *error) {
if (granted && error == nil) {
/**
* Now we can ask for more permissions
**/
NSArray *readPermissions = @[@"read_stream"];
[dict setObject:readPermissions forKey: ACFacebookPermissionsKey];
[accountStore requestAccessToAccountsWithType:facebookAccountType options:dict completion:^(BOOL granted, NSError *error) {
if(granted && error == nil) {
} else {
NSLog(@"error is: %@",[error description]);
[self performSelectorOnMainThread:@selector(showFacebookAlert) withObject:nil waitUntilDone:NO];
}
}];
} else {
NSLog(@"error is: %@",[error description]);
[self performSelectorOnMainThread:@selector(showFacebookAlert) withObject:nil waitUntilDone:NO];
}
}];