Iphone FBConnect:“;用户没有';t授权应用程序执行此操作“;

Iphone FBConnect:“;用户没有';t授权应用程序执行此操作“;,iphone,permissions,fbconnect,Iphone,Permissions,Fbconnect,我正在开发一个iPhone应用程序,其中包括facebook墙上的帖子。登录后,我通过以下代码发布到用户的墙上: NSString *appIcon = [NSString stringWithString:@"http://a2.twimg.com/profile_images/416166235/apple-black_normal.png"]; NSString *appSiteUrl = [NSString stringWithString:@"http://www.apple.com"

我正在开发一个iPhone应用程序,其中包括facebook墙上的帖子。登录后,我通过以下代码发布到用户的墙上:

NSString *appIcon = [NSString stringWithString:@"http://a2.twimg.com/profile_images/416166235/apple-black_normal.png"];
NSString *appSiteUrl = [NSString stringWithString:@"http://www.apple.com"];
NSString *attachment= [NSString stringWithFormat:@"{\"caption\":\"%@ Likes in the iPhone App\",\"description\":\"\",\"media\":[{\"type\":\"image\",\"src\":\"%@\",\"href\":\"%@\"}]}",_facebookName,appIcon,appSiteUrl];

// [attachment stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

NSArray *obj = [NSArray arrayWithObjects:attachment,nil];
NSArray *keys = [NSArray arrayWithObjects:@"attachment",nil];
NSDictionary *params = [NSDictionary dictionaryWithObjects:obj forKeys:keys];

NSLog(@"atachment : %@",[params description]);

[[FBRequest requestWithDelegate:self] call:@"facebook.stream.publish" params:params];
这将导致错误,即“用户未授权应用程序执行此操作”

在用户的Facebook个人资料中,该应用程序只有访问用户基本信息的权限。所以我需要从用户那里获取“stream\u publish”

那么,如何授予扩展权限对话框(对于“stream_publish”的权限)


任何帮助都将不胜感激

您应该有一小块代码,看起来与下面的类似。如果不是-在代码中搜索read_流-

  if ((self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil])) {
    _permissions =  [[NSArray arrayWithObjects:
                      @"read_stream", @"offline_access",nil] retain];
  }
将@“stream_publish”添加到列表中,您就可以开始了。

-乔恩

我自己找到了问题的解决办法

实际上,问题的原因是应用程序没有“发布到墙”的权限。 (publish_stream)。因此FB拒绝了,并出现以下错误

“用户尚未授权此应用程序执行此操作”

因此,当用户登录时,要求用户授予发布流的权限

- (void)session:(FBSession*)session didLogin:(FBUID)uid {

    FBPermissionDialog *permissions = [[FBPermissionDialog alloc]initWithSession:_session];
    permissions.permission = [NSString stringWithString: @"publish_stream"]; 
    [permissions show];

}
`

一旦用户允许“张贴到墙上”,此对话框将不再出现。

上述解决方案使用FBPermissionDialog,它可以在登录后更改权限,但您最好在首次登录时请求权限。这样您就不会两次打开外部浏览器

if (![facebook isSessionValid]) {
    NSArray *permissions = [[NSArray alloc] initWithObjects:
                            @"publish_stream",
                            nil];
    [facebook authorize:permissions];
    [permissions release];        
}

谢谢John,不幸的是,我在FBConnect或我的编码中找不到这样一段代码。事实上,我自己找到了解决办法。这行不通。请在facebook的开发者网站上查看您的应用程序。只有这样你才能分享