我正在使用FBSDKLoginButton
来允许用户使用Facebook
进行登录并使用
FBSDKLoginButton.readPermissions = @[@"public_profile",@"email",@"user_likes",@"email",@"user_birthday"];
要求权限,但我还需要一个权限,即我应该使用的publish_actions
FBSDKLoginManager
带
logInWithReadPermissions:@[@"public_profile",@"user_likes",@"user_birthday"]
logInWithPublishPermissions:@[@"publish_actions"]
但由于某种原因,这会影响我的许可“我的一些许可是缺少支票图片
代码: -
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
}
}
}];
结果: -
**将用户重定向到权限视图需要很长时间吗?并非所有我的许可都出现在用户**
注意: - 我知道这个警告意味着我需要提交我的应用程序进行审核,但这不是我现在要问的内容。
更新
当我尝试“Dheeraj Singh”解决方案时,但在这种情况下,用户将首次重新定向到Facebook两次获得publish_action然后获取电子邮件和生日许可这是不好的。
答案 0 :(得分:12)
Facebook登录可让您的应用访问个人的公开个人资料,朋友列表和电子邮件地址。这三个权限不需要审核。相反,您应用的用户将选择是否要授予对此信息的访问权限。
为了让您的应用访问个人Facebook个人资料的其他元素(阅读权限)或代表他们向Facebook发布内容(写入权限),您需要提交以供审核。
请参阅:https://developers.facebook.com/docs/apps/review#submitlogin
已更新:
应用应该将读取和发布权限请求分开。
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的权限。
答案 1 :(得分:6)
正如我所看到的那样,您尝试使用“ user_likes ”,“ user_birthday ”,“ public_profile ”和“< strong> publish_actions “权限。
自2015年5月1日起,Facebook仅启用“ public_profile ”,“电子邮件”和“ user_friends ”,无需审批流程即可使用。
对于“ user_likes ”,“ user_birthday ”和“ publish_actions ”,您需要获得 facebook
对于审核流程,您可以从Facebook Review获得帮助。
答案 2 :(得分:4)
我对user_posts权限也有两周相同的问题,但经过一些搜索后我找到了解决方案,如果您仍然遇到此问题,请按照以下步骤进行操作
答案 3 :(得分:1)
var login = FBSDKLoginManager()
@IBAction func fbBtnPressed(_ sender: AnyObject) {
login.logIn(withReadPermissions: ["email"], from: self) { (FBSDKLoginManagerLoginResult, Error) in
if Error != nil {
print("O Login via Facebook Falhou. Erro: \(Error)")
} else {
let accessToken = FBSDKAccessToken.current().tokenString
self.gotoScreen() //Function for screen after login succesfull
print("Acesso concedido ao Facebook. \(accessToken)")
}
}
}