2011-08-31 76 views
6

我有一個iPhone/iPad應用程序,它可以進行一些基本的照片編輯,併爲用戶提供將成品上傳到Facebook的選項。該應用程序擁有超過10萬用戶,大部分用戶將照片上傳到Facebook都沒有問題。但是,有少數用戶似乎無論如何都無法讓他們的照片上傳。我曾與他們合作,以確保它不是應用程序權限或Facebook設置阻止他們,並且在那裏找不到任何問題。所以我想知道如果我在FBConnect上做了一些不正確的事情,導致問題偶爾出現一次。下面是代碼:iOS:上傳到Facebook的照片並不總是上傳

- (void)initFacebook { 
    if(self.facebook == nil) { 
    Facebook *fb = [[Facebook alloc] init]; 
    self.facebook = fb; 
    [fb release]; 
    } 

    if([self.facebook isSessionValid]) { 
    [[NSNotificationCenter defaultCenter] postNotificationName:@"FacebookIsReady" 
                object:nil 
                userInfo:nil]; 

    } else { 
    NSArray *perms = [NSArray arrayWithObjects:@"publish_stream", @"user_likes", nil]; 
    [self.facebook authorize:MY_FB_APP_ID permissions:perms delegate:self]; 
    } 
} 

-(void)fbDidLogin { 
    [[NSNotificationCenter defaultCenter] postNotificationName:@"FacebookIsReady" 
                object:nil 
                userInfo:nil]; 
} 

// this is in a different class 
- (void)facebookIsReady:(NSNotification *)notification {  
    AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate]; 
    NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys:self.theImage, @"source", nil]; 

    [appDelegate.facebook requestWithGraphPath:@"/me/photos" 
             andParams:params 
            andHttpMethod:@"POST" 
             andDelegate:appDelegate]; 
} 

在FBRequestDelegate即使照片沒有出現在Facebook的個人主頁的didLoad總是被調用。所以我得到的代碼似乎永遠不會失敗,但照片並不總是出現在Facebook配置文件中。

該應用程序是否有可能無法在用戶配置文件中創建新相冊?我曾看到其他人之前在各個小組報告過這個問題,但從未找到實際的解決方案。謝謝。

回答

0

你必須包括在您的權限user_photos陣列像這樣:

NSArray *permissions = [[NSArray alloc] initWithObjects: 
    @"user_photos", 
    @"publish_stream", 
    @"user_likes", 
    nil]; 

這裏是所有的權限列表:https://developers.facebook.com/docs/reference/api/permissions/

+0

要添加到這一點:沒有'user_photos',如果照片被上傳成功後,要求用戶在手動導航到自己的相冊和周圍有點戳。如果確實有效,他們可能會遇到一個UI,告訴他們他們有需要手動批准的待處理上傳。該對話框非常低調,所以很容易錯過。 (另外,對於它的價值,可能還有一個手動隱私設置,用戶可以切換來強制執行此行爲,即使是包含'user_photos'權限 - 只是猜測。) – toblerpwn