FBSDKLoginManager logInWithReadPermissions? [英] FBSDKLoginManager logInWithReadPermissions?

查看:2259
本文介绍了FBSDKLoginManager logInWithReadPermissions?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用 FBSDKLoginButton 来允许用户使用 Facebook 登录并使用
FBSDKLoginButton.readPermissions = @ [@public_profile,@email,@user_likes,@email,@user_birthday];

I'm using FBSDKLoginButton to allow to user login using Facebook and using FBSDKLoginButton.readPermissions = @[@"public_profile",@"email",@"user_likes",@"email",@"user_birthday"];

要求权限,但我还需要一个权限,即publish_actions我应该使用
FBSDKLoginManager

to ask for permissions , but I need one more permission which is publish_actions I should use FBSDKLoginManager

with

 logInWithReadPermissions:@[@"public_profile",@"user_likes",@"user_birthday"] 
logInWithPublishPermissions:@[@"publish_actions"]

但由于某种原因这会影响到我的许可我的一些许可缺少支票图片

but this for some reason affect on my permission "some of my permission are missing check image

代码: -

FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init];
                [login logInWithPublishPermissions:@[@"publish_actions"] handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) {
                    if (error) {
                        // Process error
                    } else if (result.isCancelled) {
                        // Handle cancellations
                    } else {
                        // If you ask for multiple permissions at once, you
                        // should check if specific permissions missing
                        if ([result.grantedPermissions containsObject:@"publish_actions"]) {
                            // Do work
                        }
                    }
                }];

[login logInWithReadPermissions:@[@"public_profile",@"",@"user_likes",@"user_birthday"] handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) {
    if (error) {
        // Process error
    } else if (result.isCancelled) {
        // Handle cancellations
    } else {
        // If you ask for multiple permissions at once, you
        // should check if specific permissions missing
        if ([result.grantedPermissions containsObject:@"email"]) {
            // Do work
        }
    }
}];

结果: -

**将用户重定向到权限视图需要很长时间吗?而不是我的所有许可都显示给用户**

**it take long time to redirect the user to the permission view ? and not all my permission appear to user **

注意: -
我知道这个警告意味着我需要提交我的应用程序进行审核但这不是我的意思我现在就问。

更新

当我尝试Dheeraj Singh解决方案时,但在这种情况下,用户将第一次重新定向到Facebook两次获得publish_action然后获得电子邮件和生日许可这是不好的。

推荐答案

Facebook登录可让您的应用访问个人的公开个人资料,朋友列表和电子邮件地址。这三个权限不需要审核。相反,您应用的用户将选择是否要授予对此信息的访问权限。

Facebook Login provides your app access to a person's public profile, friend list, and email address. These three permissions do not require review. Instead, your app's users will choose whether they want to grant access to this information.

为了让您的应用访问某个人的Facebook个人资料的其他元素(读取权限)或者代表他们向Facebook发布内容(写入权限),您需要提交以供审核。

In order for your app to access additional elements of a person's Facebook profile (read permissions) or to publish content to Facebook on their behalf (write permissions), you will need to submit for review.

请参阅: https://developers.facebook.com/docs/apps/review#submitlogin

已更新:

应用应将读取和发布权限请求分开。

Apps should separate the request of read and publish permissions.

 FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init];

    [login logInWithPublishPermissions:@[@"publish_actions"] handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) {
        if (error) {
            // Process error
        } else if (result.isCancelled) {
            // Handle cancellations
        } else {
            // If you ask for multiple permissions at once, you
            // should check if specific permissions missing
            if ([result.grantedPermissions containsObject:@"publish_actions"]) {
                // Do work

                [login logInWithReadPermissions:@[@"user_likes",@"user_birthday"] handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) {
                    if (error) {
                        // Process error
                    } else if (result.isCancelled) {
                        // Handle cancellations
                    } else {
                        // If you ask for multiple permissions at once, you
                        // should check if specific permissions missing
                        if ([result.grantedPermissions containsObject:@"user_birthday"]) {
                            // Do work

                            NSLog(@"Permission  2: %@",result.grantedPermissions);
                        }
                    }
                }];

            }
        }
    }];

您在读取权限中不需要public_profile,就像授予了publish_actions的权限一样,它也获得了public_profile的权限。

You don't need public_profile in read permission as if granted permission to publish_actions it also gets permission for public_profile.

这篇关于FBSDKLoginManager logInWithReadPermissions?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆