除了我的ios之外,不能在Facebook墙上发布

时间:2014-06-16 10:39:08

标签: ios objective-c

我已经整合了facebook sdk最新版本,我使用我的帐户ABC在开发人员上创建应用程序....并使用Facebook App id。如果我使用我的ABC帐户登录我的Ios应用程序,并在我的墙上成功登录facebook.it帖子,一切都很好。

但是,如果我使用任何其他帐户登录Facebook。我成功了,但是当我发布时我得到了错误。

**我得到了这个错误**

错误Domain = com.facebook.sdk Code = 5"操作无法完成。 (com.facebook.sdk错误5。)" UserInfo = 0x22689930 {com.facebook.sdk:HTTPStatusCode = 403,com.facebook.sdk:ParsedJSONResponseKey = {     body = {         error = {             代码= 200;             message ="(#200)用户未授权应用程序执行此操作";             type = OAuthException;         };     };     code = 403; },com.facebook.sdk:ErrorSessionKey =,expirationDate:2014-08-15 08:56:01 +0000,refreshDate:2014-06-16 10:10:43 +0000,attemptsRefreshDate:0001-12-30 00: 00:00 +0000,权限:(     状态,     允许 )>}

发布

- (void)post:(NSString *)postString {

if (FBSession.activeSession.state == FBSessionStateOpen|| FBSession.activeSession.state == FBSessionStateOpenTokenExtended)
{
    NSArray *permissionsNeeded = @[@"publish_stream"];
    [FBRequestConnection startWithGraphPath:@"/me/permissions"
                          completionHandler:^(FBRequestConnection *connection, id result, NSError *error) {
                              if (!error){
                                  NSDictionary *currentPermissions= [(NSArray *)[result data] objectAtIndex:0];
                                  NSMutableArray *requestPermissions = [[NSMutableArray alloc] initWithArray:@[]];
                                  for (NSString *permission in permissionsNeeded){
                                      if (![currentPermissions objectForKey:permission]){
                                          [requestPermissions addObject:permission];
                                      }
                                  }

                                  if ([requestPermissions count] < 1){
                                      [FBSession.activeSession requestNewPublishPermissions:requestPermissions
                                                                            defaultAudience:FBSessionDefaultAudienceFriends
                                                                          completionHandler:^(FBSession *session, NSError *error) {
                                                                              if (!error) {
                                                                                  [self makeRequestToUpdateStatus:postString];
                                                                              } else {
                                                                                  NSLog(@"%@",[error description]);
                                                                              }
                                                                          }];
                                  } else {
                                      [self makeRequestToUpdateStatus:postString];
                                  }

                              } else {

                                   NSLog(@"%@",[error description]);
                              }
                          }];
}
else
{

}

}

登录

- (无效)loginToFacebook {     NSLog(@&#34; facebook登录名为&#34;);     if(!(FBSession.activeSession.state == FBSessionStateOpen || FBSession.activeSession.state == FBSessionStateOpenTokenExtended)){          NSArray * permissions = [[NSArray alloc] initWithObjects:                                 @&#34; publish_stream&#34 ;,                                 零];

    [FBSession openActiveSessionWithPublishPermissions:permissions defaultAudience:FBSessionDefaultAudienceEveryone allowLoginUI:YES completionHandler:^(FBSession *session, FBSessionState status, NSError *error) {

    dispatch_async( dispatch_get_main_queue(), ^{
        [self sessionStateChanged:session
                            state:status
                            error:error];
         });


    }];
 }

否则     {     }

}

2 个答案:

答案 0 :(得分:0)

嗯,该消息表明您没有请求用户的正确权限。

也许您之前要求更多,因此它仍适用于您的ABC帐户,因为您当时已经“授权”了该帐户的应用程序。所以Facebook仍然认为ABC授权该应用程序发布在墙上。

修改:添加以下说明以回应您的评论:

您可以找到一个包含您可以要求here权限的列表。请注意,对于API v 2.0,如果您要求多个基本权限(并且在墙上发布不是这样的基本权限),您需要让Facebook“批准”您的应用程序(除非您在2014年4月之前启动了应用程序,在这种情况下,您可以继续使用v1.0,直到2015年4月才需要批准。)

取消授权您自己的应用程序可以通过以该用户身份登录,转到设置(右上角菜单),选择左侧的应用程序并单击应用程序旁边的“x”来完成。

答案 1 :(得分:0)

<强>步骤

 https://developers.facebook.com/apps
 Select Your App then follow steps.

 in **Settings** -> Basic 
  1. add contact Email
  2. Bundle id
  3. Url Scheme Suffix (like Your app name)

 Then Save

 In **Status & Review**

 1.Do you want to make this app and all its live features available to the general public?
  Set Yes

 May be Useful