适用于 iOS 6 的 Facebook SDK 要求您在发布权限之前请求读取权限,并强烈建议您仅在上下文中请求发布权限。但是,我没有使用 FB 登录名进行登录或与读取权限相关的任何事情,我只是希望人们能够在应用程序中发布行为。
我只想请求读取权限,然后立即在 native 权限对话框中请求发布权限。我发现这样做的唯一方法是修改 FBLoginView(这是应用程序附带的登录 View ),但我想自己做一个按钮,如果用户已登录,则发布到 FB .
这就是我现在的电话
[appDelegate openSessionWithAllowLoginUI:YES];
在委托(delegate)中调用它
- (BOOL)openSessionWithAllowLoginUI:(BOOL)allowLoginUI {
NSArray *permissions = [[NSArray alloc] initWithObjects:
@"email",
@"user_likes",
nil];
return [FBSession openActiveSessionWithReadPermissions:permissions
allowLoginUI:allowLoginUI
completionHandler:^(FBSession *session,
FBSessionState state,
NSError *error) {
[self sessionStateChanged:session
state:state
error:error];
}];
在授权读取权限后,如何修改该函数或立即调用“openActiveSessionwithPublishPermissions”函数?
最佳答案
您可以在 openActiveSessionWithReadPermissions
的完成处理程序中调用 openActiveSessionwithPublishPermissions
。在 [self sessionStateChanged:session 之后
状态:状态
错误:错误];
更新:
例如。我已经通过以下方式完成了这项工作:
我在一个用于管理所有 Facebook 交易的类中创建了这个方法:
- (void)attemptToConnectToFacebookForFirstTime:(void (^)(bool granted))completion
{
ACAccountType *facebookAccountType = [accountStore
accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierFacebook];
// Specify App ID and permissions
NSDictionary *options = @{
ACFacebookAppIdKey: @"000000000000",
ACFacebookPermissionsKey: @[@"email"],
ACFacebookAudienceKey: ACFacebookAudienceEveryone
};
[accountStore requestAccessToAccountsWithType:facebookAccountType
options:options
completion:^(BOOL granted, NSError *e)
{
// if you gotta do something here, then do it.
// and then call the completion
completion(granted);
}];
}
然后创建了这个:
- (void)connectToFacebook:(void (^)(bool granted))completion
{
ACAccountType *facebookAccountType = [accountStore
accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierFacebook];
// Specify App ID and permissions
NSDictionary *options = @{
ACFacebookAppIdKey: @"0000000000000",
ACFacebookPermissionsKey: @[@"publish_stream",
@"publish_actions"],
ACFacebookAudienceKey: ACFacebookAudienceEveryone
};
[accountStore requestAccessToAccountsWithType:facebookAccountType
options:options
completion:^(BOOL granted, NSError *e)
{
// do what you gotta do, and call completion
completion();
}];
}
然后这样称呼他们:
[[FacebookManager sharedManager] attemptToConnectToFacebookForFirstTime:^(bool granted)
{
if (granted)
{
[[FacebookManager sharedManager] connectToFacebook:^(bool granted)
{
// do something
}
}
}
我的版本没有使用 facebook SDK,但思路是一样的。
关于ios - 读取权限后直接请求发布权限 - Facebook SDK for iOS 6,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16718291/