当前位置: 首页 > 知识库问答 >
问题:

使用iOS SDK在脸书上发布带有描述的图片

狄旻
2023-03-14

我正在尝试在Facebook上发布/分享图片。首先,我使用以下方式获得发布权限:

        NSArray *permissionsNeeded = @[@"publish_actions"];
        [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] > 0){
                                          [FBSession.activeSession requestNewPublishPermissions:requestPermissions
                                                                                defaultAudience:FBSessionDefaultAudienceFriends
                                                                              completionHandler:^(FBSession *session, NSError *error) {
                                                                                  if (!error) {
                                                                                      [self shareDataOnFacebook];
                                                                                  } else {
                                                                                      NSLog(@"%@", error.description);
                                                                                  }
                                                                              }];
                                      } else {
                                          [self shareDataOnFacebook];
                                      }

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

如果我对会话进行 NS 记录,我得到的是:

FBSessionStateOpenTokenExtended,loginHandler: 0x15eab870,appID: 719202928131376,urlSchemeSuffix:,tokenCachingStrategy:,expiration date:4001-01-01 00:00:00 0000,refresh date:2014-05-10 12:57:41 0000,attempted refresh date:0001-12-30 00:00

现在,如果我尝试使用以下方式发布图片:

NSDictionary *params = [NSDictionary dictionaryWithObjectsAndKeys:
                       @"{image-url}", @"url",
                       nil
                   ];
/* make the API call */
[FBRequestConnection startWithGraphPath:@"/me/photos"
                         parameters:params
                         HTTPMethod:@"POST"
                  completionHandler:^(
                      FBRequestConnection *connection,
                      id result,
                      NSError *error
                  ) {
                      /* handle the result */
                  }];

我收到错误消息

错误域=com.facebook。sdk Code=5“操作无法完成。(com.facebook.sdk error 5.)”UserInfo=0x15e4f370{com.facebook.sdk:HTTPStatusCode=403,com.facefacebook.sdk:ParsedJSONResponseKey={body={error={Code=200;message=“(#200)Permissions error”;type=OAuthException;};};代码=403;},com.facebook。sdk:ErrorSessionKey=,过期日期:4001-01-01 00:00:00 0000,刷新日期:2014-05-10 12:57:41 0000,尝试刷新日期:0001-12-30 00:00:0 0000,权限:(状态,权限,“publish_actions”)

甚至,如果我再次获得权限时,“publish_actions”不在列表中。请指导我做错了什么。

有没有其他方式分享/发布带有描述的图片(没有任何链接,这是分享对话所必需的)?

共有2个答案

笪栋
2023-03-14

这对我有用。

NSArray *requestPermission = @[@"publish_actions"];
        // Open session with public_profile
        [FBSession openActiveSessionWithPublishPermissions:requestPermission defaultAudience:FBSessionDefaultAudienceEveryone allowLoginUI:YES
                                      completionHandler:
         ^(FBSession *session, FBSessionState state, NSError *error) {
             if (!error){
                 // If the session was opened successfully
                 if (state == FBSessionStateOpen){
                     // Your code here
                      NSLog(@"session opened");
                     [self postToFacebook];

                 } else {
                     // There was an error, handle it
                     NSLog(@" error on opening session = %@",error);
                 }
             }
         }];





-(void)postToFacebook{
NSLog(@"post to facebook");
// Put together the dialog parameters
NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
                               @"Sharing Tutorial", @"name",
                               @"Build great social apps and get more installs.", @"caption",
                               @"Allow your users to share stories on Facebook from your app using the iOS SDK.", @"description",
                               @"https://developers.facebook.com/docs/ios/share/", @"link",
                               @"http://i.imgur.com/g3Qc1HN.png", @"picture",
                               nil];

// Make the request
[FBRequestConnection startWithGraphPath:@"/me/feed"
                             parameters:params
                             HTTPMethod:@"POST"
                      completionHandler:^(FBRequestConnection *connection, id result, NSError *error) {
                          if (!error) {
                              // Link posted successfully to Facebook
                              NSLog(@"result: %@", result);
                          } else {
                              // An error occurred, we need to handle the error
                              // See: https://developers.facebook.com/docs/ios/errors
                              NSLog(@"%@", error.description);
                          }
                      }];

}

燕智
2023-03-14

在敲了几个小时的头之后,我想通了。似乎您需要进入“developers.facebook.com”状态“下的”应用程序设置”

 类似资料:
  • 问题内容: 我有一个(可创建一个页面,可以通过 Manage Jenkins 进行访问。 我有一些要使用验证的表单字段。如果要在(具有描述符的)页面上执行此操作,则可以在描述符中使用一种简单的方法。 如果我直接向其中添加类似的方法,则实际上可以直接通过URL myPage / myMethod访问, 但是该方法仅返回404,显然我需要发送表单值。 我遇到的一个潜在解决方案是CustomDescri

  • 我尝试使用Swagger编辑器指定GET方法的响应。但是,当我在Swagger UI中查看时,JSON没有显示响应。 我的宣言大摇大摆: 在Swagger UI中,写入响应类(状态200)的框

  • 我正在尝试将Okta集成到一个已经实现了Spring Security性的spring应用程序中。我已经成功地将spring saml添加到项目中,并且能够成功地登录到应用程序。不过,它使用的是默认的java密钥存储,我想按照文档中的建议使用另一个jks(http://docs.spring.io/spring-security-saml/docs/current/reference/html/s

  • 我正在使用记录编辑器读取COBOL文件。很好,不过有个问题。第3个字段(列,固定宽度)描述记录的类型。这样做,也为该行的其余部分布局。 如何告诉RecordEditor筛选应用于所选布局的行?

  • 我正在尝试获取脸书页面事件。我已经检查了应用程序ID和应用程序密钥是否正确,但我仍然不断收到错误。 错误消息: 未捕获的OAuthException:无效的OAuth访问令牌签名。扔进去

  • 我试图得到所有登录到我的应用程序的用户的朋友。 我无法使用此API[朋友]: https://developers.facebook.com/docs/graph-api/reference/v2.0/user/friends 因为这个API只返回任何使用过该应用程序发出请求的朋友。 所以我发现了这个API[最友好的]: https://developers.facebook.com/docs/g