Facebook SDK 4.0:询问publish_actions

时间:2015-04-22 16:21:24

标签: ios objective-c facebook facebook-sdk-4.0

我正在使用 FBSDKLoginButton 在我的应用中通过 Facebook 登录。我将 readPermissions 定义为;

NSArray *permissions = [NSArray arrayWithObjects:@"public_profile", @"email",nil];
self.loginFbBtn.readPermissions = permissions;

以上情况一切顺利。但是现在如果我需要向我的时间轴询问帖子的权限并希望能够访问“ publish_actions ”权限,是否有办法在不实际挑衅 FBSDKLoginManager 的情况下询问这些权限,因为这是Facebook docs中给出的唯一方法:

if ([[FBSDKAccessToken currentAccessToken] hasGranted:@"publish_actions"]) {
  // TODO: publish content.
} else {
  FBSDKLoginManager *loginManager = [[FBSDKLoginManager alloc] init];
  [loginManager logInWithPublishPermissions:@[@"publish_actions"] handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) {
    //TODO: process error or result.
  }];
}

显然,这是您为应用调用“ publish_actions ”的唯一方法。我想在没有 FBSDKLoginManager 的情况下使用它。请帮忙,我需要这样做。

所以这是最新消息:

Wizkid MingLi 的帮助下,我最终通过 FBSDKLoginManager 实现了它,以下代码段用于通过自定义进行Facebook登录按钮及其@selector(facebookLogin),然后通过方法getSharingPermissions分享需要共享时共享的权限:

-(void) facebookLogin
{
    @try
    {
        self.loginManager = [[FBSDKLoginManager alloc] init];
        [self.loginManager setLoginBehavior:FBSDKLoginBehaviorWeb];
        [self.loginManager logInWithReadPermissions:@[@"public_profile",@"email"] handler:^(FBSDKLoginManagerLoginResult *result,NSError *error)
        {
            if([FBSDKAccessToken currentAccessToken])
            {
                [[[FBSDKGraphRequest alloc] initWithGraphPath:@"me" parameters:nil]
                 startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error)
                 {
                     if (!error)
                     {
                         NSLog(@"fetched user:%@", result);
                         NSDictionary *userDict = (NSDictionary*)result;
                     }
                 }];
            }}];
    }
}
@catch (NSException *exception)
{
    NSLog(@"Exception %@", exception);
}

获取分享权限:

-(void)getSharePermissions
{
    if (![[FBSDKAccessToken currentAccessToken] hasGranted:@"publish_actions"])
    {
        [self.loginManager setLoginBehavior:FBSDKLoginBehaviorWeb];
        [self.loginManager logInWithPublishPermissions:@[@"publish_actions"] handler:^(FBSDKLoginManagerLoginResult *result, NSError *error)
        {
            if ([result.grantedPermissions containsObject:@"publish_actions"])
            {

            }}];
    }
}

所以错误是我再次获取“登录”页面,并在调用getSharingPermissions时再次询问用户凭据。请帮忙。提前致谢。

0 个答案:

没有答案