Ios Facebook权限崩溃
一旦用户已使用读取权限登录(这完全可以正常工作),我需要向他请求发布权限:Ios Facebook权限崩溃,ios,objective-c,facebook,permissions,Ios,Objective C,Facebook,Permissions,一旦用户已使用读取权限登录(这完全可以正常工作),我需要向他请求发布权限: NSArray *publishPermissions = @[@"publish_actions", @"user_photos"]; FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init]; [login logInWithPublishPermissions:publishPermissions fromViewController:s
NSArray *publishPermissions = @[@"publish_actions", @"user_photos"];
FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init];
[login logInWithPublishPermissions:publishPermissions fromViewController:self handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) {
NSLog(@"FB error: %@ || result: %@", error, result);
}];
}
如果在给定的代码片段中,我只是要求执行publish\u操作
一切正常,我得到了日志。如果我只需要user\u照片
或两者都需要,应用程序将因常规NSException
而崩溃
为什么
用户照片
会导致此类问题,以及如何使其正常工作?更换此项。这在我的应用程序中运行良好
FBSDKLoginManager *login = [[FBSDKLoginManager alloc]init];
[FBSDKAccessToken setCurrentAccessToken:nil];
[login logInWithReadPermissions: @[@"public_profile", @"email", @"user_friends",@"user_birthday"]
fromViewController:self
handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) {
if ([FBSDKAccessToken currentAccessToken]) {
[[[FBSDKGraphRequest alloc] initWithGraphPath:@"me" parameters:@{@"fields": @"email,name,birthday,first_name,last_name,gender"}]
startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error)
{
if (!error)
{
}
else
{
NSLog(@"error : %@",error);
}
}];
}
}];
替换这个。这在我的应用程序中运行良好
FBSDKLoginManager *login = [[FBSDKLoginManager alloc]init];
[FBSDKAccessToken setCurrentAccessToken:nil];
[login logInWithReadPermissions: @[@"public_profile", @"email", @"user_friends",@"user_birthday"]
fromViewController:self
handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) {
if ([FBSDKAccessToken currentAccessToken]) {
[[[FBSDKGraphRequest alloc] initWithGraphPath:@"me" parameters:@{@"fields": @"email,name,birthday,first_name,last_name,gender"}]
startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error)
{
if (!error)
{
}
else
{
NSLog(@"error : %@",error);
}
}];
}
}];
基于Facebook Swift实现,只有以
public
或managed
开头的公共权限被处理,所有其他权限都会导致应用程序崩溃。基于Facebook Swift实现,只有以public
或managed
开头的公共权限才会被处理,所有其他权限都会导致应用程序崩溃。您可以从此代码获取所有内容:
{
NSString *getFbid;
NSString *getFbFirstName,*getFBlastName, *getFbemail,*getfbBirthday,*getfbGender,*getFBpHone,*getFBlocation,*getFBcountry;
}
-(void)loginButtonClicked
{
FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init];
[login
logInWithReadPermissions: @[@"public_profile", @"user_friends", @"email"]
fromViewController:self
handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) {
if (error) {
DLog(@"Process error======%@",error.description);
indicators.hidden=YES;
[indicators stopAnimating];
} else if (result.isCancelled) {
DLog(@"Cancelled");
indicators.hidden=YES;
[indicators stopAnimating];
} else {
if ([FBSDKAccessToken currentAccessToken]) {
[[[FBSDKGraphRequest alloc] initWithGraphPath:@"me" parameters:@{@"fields": @"id, name, link, first_name, last_name, picture.type(large), email, birthday, bio ,location ,friends ,hometown , gender ,friendlists"}]
startWithCompletionHandler:^(
FBSDKGraphRequestConnection *connection, id result, NSError *error) {
if (!error)
{
// NSLog(@"fetched user:%@", result);
// [self fetchingFacebookFriends];
[defFacebookData setObject:[result objectForKey:@"email"] forKey:@"fbEmail"];
[defFacebookData setObject:[result objectForKey:@"id"] forKey:@"fbID"];
//PASS ID
getFbid = [result objectForKey:@"id"];
NSLog(@"getFbid========>%@",getFbid);
//PASS FIRST NAME
getFbFirstName=[result objectForKey:@"first_name"];
NSLog(@"first======>%@",getFbFirstName);
//PASS LAST NAME
getFBlastName=[result objectForKey:@"last_name"];
NSLog(@"first======>%@",getFBlastName);
//PASS EMAIL
getFbemail=[result objectForKey:@"email"];
NSLog(@"first======>%@",getFbemail);
//PASS PHONE
getfbGender=[result objectForKey:@"gender"];
NSLog(@"first======>%@",getfbGender);
[defFacebookData setObject:[result objectForKey:@"name"] forKey:@"fbName"];
// Image
FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc]
initWithGraphPath:[NSString stringWithFormat:@"me/picture?type=large&redirect=false"]
parameters:nil
HTTPMethod:@"GET"];
[request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection,
id fbImageResult,
NSError *error) {
NSString *strURL = [NSString stringWithFormat:@"%@",[[fbImageResult objectForKey:@"data"] objectForKey:@"url"]];
NSLog(@"strURL=====>%@",strURL);
[defFacebookData setObject:strURL forKey:@"fbImage"];
[defFacebookData synchronize];
NSDictionary *fbdict=[NSDictionary dictionaryWithObjectsAndKeys:getFbid,@"id",getFbFirstName,@"first_name",getFBlastName,@"last_name",getFbemail,@"email",getfbGender,@"gender",strURL,@"fbImage", nil];
NSLog(@"done=========>%@",fbdict);
}];
}
else{
DLog(@"error is %@", error.description);
}
}];
}
}
}];
}
您可以从以下代码获取所有内容:
{
NSString *getFbid;
NSString *getFbFirstName,*getFBlastName, *getFbemail,*getfbBirthday,*getfbGender,*getFBpHone,*getFBlocation,*getFBcountry;
}
-(void)loginButtonClicked
{
FBSDKLoginManager *login = [[FBSDKLoginManager alloc] init];
[login
logInWithReadPermissions: @[@"public_profile", @"user_friends", @"email"]
fromViewController:self
handler:^(FBSDKLoginManagerLoginResult *result, NSError *error) {
if (error) {
DLog(@"Process error======%@",error.description);
indicators.hidden=YES;
[indicators stopAnimating];
} else if (result.isCancelled) {
DLog(@"Cancelled");
indicators.hidden=YES;
[indicators stopAnimating];
} else {
if ([FBSDKAccessToken currentAccessToken]) {
[[[FBSDKGraphRequest alloc] initWithGraphPath:@"me" parameters:@{@"fields": @"id, name, link, first_name, last_name, picture.type(large), email, birthday, bio ,location ,friends ,hometown , gender ,friendlists"}]
startWithCompletionHandler:^(
FBSDKGraphRequestConnection *connection, id result, NSError *error) {
if (!error)
{
// NSLog(@"fetched user:%@", result);
// [self fetchingFacebookFriends];
[defFacebookData setObject:[result objectForKey:@"email"] forKey:@"fbEmail"];
[defFacebookData setObject:[result objectForKey:@"id"] forKey:@"fbID"];
//PASS ID
getFbid = [result objectForKey:@"id"];
NSLog(@"getFbid========>%@",getFbid);
//PASS FIRST NAME
getFbFirstName=[result objectForKey:@"first_name"];
NSLog(@"first======>%@",getFbFirstName);
//PASS LAST NAME
getFBlastName=[result objectForKey:@"last_name"];
NSLog(@"first======>%@",getFBlastName);
//PASS EMAIL
getFbemail=[result objectForKey:@"email"];
NSLog(@"first======>%@",getFbemail);
//PASS PHONE
getfbGender=[result objectForKey:@"gender"];
NSLog(@"first======>%@",getfbGender);
[defFacebookData setObject:[result objectForKey:@"name"] forKey:@"fbName"];
// Image
FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc]
initWithGraphPath:[NSString stringWithFormat:@"me/picture?type=large&redirect=false"]
parameters:nil
HTTPMethod:@"GET"];
[request startWithCompletionHandler:^(FBSDKGraphRequestConnection *connection,
id fbImageResult,
NSError *error) {
NSString *strURL = [NSString stringWithFormat:@"%@",[[fbImageResult objectForKey:@"data"] objectForKey:@"url"]];
NSLog(@"strURL=====>%@",strURL);
[defFacebookData setObject:strURL forKey:@"fbImage"];
[defFacebookData synchronize];
NSDictionary *fbdict=[NSDictionary dictionaryWithObjectsAndKeys:getFbid,@"id",getFbFirstName,@"first_name",getFBlastName,@"last_name",getFbemail,@"email",getfbGender,@"gender",strURL,@"fbImage", nil];
NSLog(@"done=========>%@",fbdict);
}];
}
else{
DLog(@"error is %@", error.description);
}
}];
}
}
}];
}
电子战。我不想阅读用户配置文件。我想给它写信。这个答案毫无帮助。而且它与
用户照片
毫无共同之处!你读过这个问题了吗。我不想阅读用户配置文件。我想给它写信。这个答案毫无帮助。而且它与用户照片
毫无共同之处!你看过问题了吗?这既不发表任何东西(都是GET),也不涉及图像的问题。你看过问题了吗?这既不发表任何东西(都是GET),也不涉及图像的问题。你看过问题了吗?你的回答不能解释这次车祸。发生崩溃的原因是iOS实现未读取用户照片
权限请求。这是Facebook API中的一个bug(它至少应该返回一个错误,而不是崩溃)。你的答案不能解释崩溃。发生崩溃的原因是iOS实现未读取用户照片
权限请求。这是Facebook API中的一个bug(它至少应该返回一个错误,而不是崩溃)。首先,您创建Facebook开发者帐户并获取API密钥该API密钥您必须添加project info.plist文件,获取Facebook SDK并将Facebook SDK包括到您的项目中,然后尝试此代码。首先,您创建Facebook开发者帐户并获取API密钥该API密钥您必须添加project info.plist文件并获取Facebook SDK并包括将Facebook SDK添加到您的项目中,然后尝试此代码。