读取权限后直接请求发布权限 - 适用于 iOS 6 的 Facebook SDK
Posted
技术标签:
【中文标题】读取权限后直接请求发布权限 - 适用于 iOS 6 的 Facebook SDK【英文标题】:Ask for publish permissions directly after read permissions - Facebook SDK for iOS 6 【发布时间】:2013-05-23 15:41:40 【问题描述】:适用于 ios 6 的 Facebook SDK 要求您在发布权限之前请求读取权限,并强烈建议您仅在上下文中请求发布权限。但是,我没有使用 FB 登录进行登录或任何与读取权限相关的操作,我只是希望人们能够在应用程序中发布行为。
我只想请求读取权限,然后立即在本机权限对话框中请求发布权限。我发现这样做的唯一方法是修改 FBLoginView (这是与应用程序一起打包的登录视图),但我想做我自己的按钮,如果用户登录,则发布到 FB .
这就是我现在的电话
[appDelegate openSessionWithAllowLoginUI:YES];
在委托中调用 this
- (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”函数?
【问题讨论】:
请关注link page 以获取 Facebook 上操作的权限列表。你会得到你的答案,祝你好运 【参考方案1】:您可以在openActiveSessionWithReadPermissions
s 完成处理程序中调用openActiveSessionwithPublishPermissions
。紧随[self sessionStateChanged:session
state:state
error:error];
更新:
例如。我已经通过以下方式完成了这项工作:
我在一个用于管理所有 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 6 的 Facebook SDK的主要内容,如果未能解决你的问题,请参考以下文章
Facebook iOS SDK - 打开会话并请求读取权限