使用Open Graph在iOS上使用Facebook SDK创建相册

本·威廉姆斯

我需要使用iOS上的Facebook SDK创建新相册。我的代码正在运行,但是最近开始返回如下错误:

{
    "com.facebook.sdk:ErrorSessionKey" = "<FBSession: 0x7290850, state: FBSessionStateOpenTokenExtended, loginHandler: 0x7290c40, appID: 380841565285975, urlSchemeSuffix: , tokenCachingStrategy:<FBSessionTokenCachingStrategy: 0x8a933e0>, expirationDate: 4001-01-01 00:00:00 +0000, refreshDate: 2013-10-14 03:16:01 +0000, attemptedRefreshDate: 0001-12-30 00:00:00 +0000, permissions:(\n    \"create_note\",\n    \"basic_info\",\n    \"share_item\",\n    \"status_update\",\n    \"publish_actions\",\n    \"video_upload\",\n    email,\n    \"photo_upload\",\n    installed,\n    \"publish_stream\",\n    \"user_birthday\",\n    \"user_location\"\n)>";
    "com.facebook.sdk:HTTPStatusCode" = 500;
    "com.facebook.sdk:ParsedJSONResponseKey" =     {
        body =         {
            error =             {
                code = 2;
                message = "An unexpected error has occurred. Please retry your request later.";
                type = OAuthException;
            };
        };
        code = 500;
    };
}

根据https://developers.facebook.com/docs/reference/api/errors/,代码2的错误是:“服务器端问题;应用程序应在等待后重试,直至达到某些应用程序定义的阈值”。

但是这至少已经失败了几天,而且我似乎找不到其他遇到类似问题的人,所以我假设问题出在我身上。

任何想法可能是什么原因?相关代码如下。createFacebookAlbum方法是失败的一种。

- (void)shareToFacebook {
if (FBSession.activeSession.isOpen) {
    NSLog(@"SESSION IS OPEN");

    [self createFacebookAlbum];
} else {
    NSLog(@"SESSION IS NOT OPEN");
    NSArray* permissions = [NSArray arrayWithObject:@"email"];
    [FBSession openActiveSessionWithReadPermissions:permissions allowLoginUI:YES completionHandler:^(FBSession *session, FBSessionState state, NSError *error) {
        [self sessionStateChanged:session state:state error:error];

        if (error) {
            /* handle failure */
            NSLog(@"error:%@, %@", error, [error localizedDescription]);
            UIAlertView* alert = [[UIAlertView alloc] initWithTitle:@"Error" message:@"There was a problem with your Facebook permissions." delegate:nil cancelButtonTitle:@"OK" otherButtonTitles: nil];
            [alert show];
        }
        else if (state == FBSessionStateClosed || state == FBSessionStateClosedLoginFailed ) {
            [FBSession.activeSession closeAndClearTokenInformation];
        }
        else if (state == FBSessionStateOpenTokenExtended || state == FBSessionStateOpen) {
            if(!self.presentedFacebookSheet) {
                [self performSelector:@selector(reauthorizeAndContinuePostToFacebook) withObject:nil afterDelay:0.5];
                self.presentedFacebookSheet = YES;
            }
        }
        }];
    }
}

- (void)reauthorizeAndContinuePostToFacebook {
    NSArray *permissions = [NSArray arrayWithObjects:@"publish_actions", nil];

    [[FBSession activeSession] requestNewPublishPermissions:permissions defaultAudience:FBSessionDefaultAudienceFriends completionHandler:^(FBSession *session, NSError *error) {
        [self shareToFacebook];
    }];
}

- (void)createFacebookAlbum {
    NSMutableDictionary* parameters = [NSMutableDictionary dictionary];
    [parameters setObject:@"Test name" forKey:@"name"];
    [parameters setObject:@"Test message" forKey:@"message"];

    FBRequest* request = [FBRequest requestWithGraphPath:@"me/albums" parameters:parameters HTTPMethod:@"POST"];

    NSLog(@"creating facebook album");
    FBRequestConnection *connection = [[FBRequestConnection alloc] init];
    [connection addRequest:request
         completionHandler:^(FBRequestConnection *connection, id result, NSError *error) {
             if (!error) {
                 NSString* albumId = [result objectForKey:@"id"];
                 NSLog(@"OK %@", albumId);
             }
             else {
                 NSLog(@"Error: %@",error.userInfo);
             }
         }];
    [connection start];
}

- (void)sessionStateChanged:(FBSession *)session state:(FBSessionState) state error:(NSError *)error {
    switch (state) {
        case FBSessionStateOpen:
        {
            [[FBRequest requestForMe] startWithCompletionHandler:
             ^(FBRequestConnection *connection,
               NSDictionary<FBGraphUser> *user,
               NSError *error) {
                 if (error) {
                     //error
                 }
                 else {
                     NSLog(@"User session found");
                 }
             }];
        }
            break;
        case FBSessionStateClosed:
        case FBSessionStateClosedLoginFailed:
            [FBSession.activeSession closeAndClearTokenInformation];
            break;
        default:
            break;
    }
}
威尔斯伯

我和你有同样的问题。一个月前,我可以不创建专辑user_photos

但是现在不再了。

我添加了权限:user_photos并且它再次起作用。

另请参阅Facebook上有关更改权限的文章https://developers.facebook.com/docs/reference/api/album/

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用Swift创建Facebook Open Graph对象

来自分类Dev

使用Facebook Android sdk的Android Facebook相册显示

来自分类Dev

使用Facebook最新的SDK获取用户相册?

来自分类Dev

通过Graph API在Facebook上创建相册

来自分类Dev

Facebook JS SDK-是否存在相册?-仅创建一次相册

来自分类Dev

使用相册名称获取相册名称,或在picasa-php-zend中从picasa获取创建的相册相册名称

来自分类Dev

如何使用Facebook SDK的Open Graph喜欢Android中的Url

来自分类Dev

使用Swift在iOS SDK中处理Facebook Graph API结果

来自分类Dev

使用Swift处理iOS SDK中的Facebook Graph API结果

来自分类Dev

使用 Facebook Graph v5 sdk 在 Facebook 上发帖时出错

来自分类Dev

Facebook iOS SDK:获取相册的封面图片

来自分类Dev

无法在iOS上创建与已删除相册同名的相册?

来自分类Dev

无法使用Open XML SDK创建文档

来自分类Dev

Facebook SDK使用Graph API版本1.0

来自分类Dev

iOS Facebook Graph API使用SDK使用“下一个”或“上一个”网址进行分页

来自分类Dev

iOS Facebook SDK打开相册选择和图像选择屏幕

来自分类Dev

如何使用 AppleScript 在 OSX 照片中的命名文件夹中创建/制作相册?

来自分类Dev

Facebook图形命令创建重复相册

来自分类Dev

App创建的Facebook相册-不公开

来自分类Dev

Facebook图形命令创建重复相册

来自分类Dev

facebook javascript sdk登录无法在iOS上使用/移动最佳做法

来自分类Dev

使用iOS SDK在Facebook上发布带有说明的图片

来自分类Dev

无法在 iOS 上使用 Facebook 登录(SDK 无法构建身份验证 URL)

来自分类Dev

iOS Facebook Graph API使用“下一个”或“上一个” URL通过SDK进行分页

来自分类Dev

使用iOS SDK 4.0登录Facebook

来自分类Dev

Xamarin iOS:使用Facebook SDK登录按钮

来自分类Dev

使用Facebook iOS SDK发布运行操作

来自分类Dev

如何在IOS中使用FB SDK创建Facebook应用广告

来自分类Dev

无法使用facebook javascript api获取相册

Related 相关文章

  1. 1

    使用Swift创建Facebook Open Graph对象

  2. 2

    使用Facebook Android sdk的Android Facebook相册显示

  3. 3

    使用Facebook最新的SDK获取用户相册?

  4. 4

    通过Graph API在Facebook上创建相册

  5. 5

    Facebook JS SDK-是否存在相册?-仅创建一次相册

  6. 6

    使用相册名称获取相册名称,或在picasa-php-zend中从picasa获取创建的相册相册名称

  7. 7

    如何使用Facebook SDK的Open Graph喜欢Android中的Url

  8. 8

    使用Swift在iOS SDK中处理Facebook Graph API结果

  9. 9

    使用Swift处理iOS SDK中的Facebook Graph API结果

  10. 10

    使用 Facebook Graph v5 sdk 在 Facebook 上发帖时出错

  11. 11

    Facebook iOS SDK:获取相册的封面图片

  12. 12

    无法在iOS上创建与已删除相册同名的相册?

  13. 13

    无法使用Open XML SDK创建文档

  14. 14

    Facebook SDK使用Graph API版本1.0

  15. 15

    iOS Facebook Graph API使用SDK使用“下一个”或“上一个”网址进行分页

  16. 16

    iOS Facebook SDK打开相册选择和图像选择屏幕

  17. 17

    如何使用 AppleScript 在 OSX 照片中的命名文件夹中创建/制作相册?

  18. 18

    Facebook图形命令创建重复相册

  19. 19

    App创建的Facebook相册-不公开

  20. 20

    Facebook图形命令创建重复相册

  21. 21

    facebook javascript sdk登录无法在iOS上使用/移动最佳做法

  22. 22

    使用iOS SDK在Facebook上发布带有说明的图片

  23. 23

    无法在 iOS 上使用 Facebook 登录(SDK 无法构建身份验证 URL)

  24. 24

    iOS Facebook Graph API使用“下一个”或“上一个” URL通过SDK进行分页

  25. 25

    使用iOS SDK 4.0登录Facebook

  26. 26

    Xamarin iOS:使用Facebook SDK登录按钮

  27. 27

    使用Facebook iOS SDK发布运行操作

  28. 28

    如何在IOS中使用FB SDK创建Facebook应用广告

  29. 29

    无法使用facebook javascript api获取相册

热门标签

归档