在facebook sdk 3.0 iOS中读取和发布权限

时间:2013-06-23 10:12:08

标签: ios facebook

在上一个SDK中,读取和发布权限是分开的。因此,在我的代码中,每当用户登录时,我都在使用此代码:

[FBSession openActiveSessionWithReadPermissions:nil
                                       allowLoginUI:YES
                                  completionHandler:
     ^(FBSession *session,
       FBSessionState state, NSError *error) {
         [self sessionStateChanged:session state:state error:error];
     }];

我在facebook开发人员看到,当我想发布时,我应该要求发布这样的权限:

// can include any of the "publish" or "manage" permissions
NSArray *permissions = 
    [NSArray arrayWithObjects:@"publish_actions", nil];

[[FBSession activeSession] reauthorizeWithPublishPermissions:permissions
                           defaultAudience:FBSessionDefaultAudienceFriends
        completionHandler:^(FBSession *session, NSError *error) {
         /* handle success + failure in block */
         }];

由于这是我使用facebook集成的第一个应用程序,我想问几个问题:

1)这些会议可以同时开放吗?我只会在用户想要发布时请求发布权限,但我应该在其他会话中做其他事情吗?比如先关闭它,然后重新打开它或者我不应该担心?

2)例如,如果我有一个postToFriends按钮,我的伪代码是这样的,对吗?

- (IBAction)postToFriendaction:(id)sender {
    if (!FBSession.activeSession.isOpen) {
        /* code from the above for enabling publish permissions*/

    }

或者我应该更改!FBSession.activeSession.is打开其他内容,因为没有用户只使用读取权限登录,他从不输入if子句。你能救我吗?

1 个答案:

答案 0 :(得分:1)

  1. 您引用的两个会话实际上是同一个会话(它是在调用openActiveSession ...之后静态可用的“活动”会话)。所以你不需要对其他会话做任何事情。

  2. 您应该查看SDK随附的Scrumptious或Hello Facebook示例应用。他们都举例说明如何发布(同时要求发布权限)。