2014-12-06 32 views
3

我是iOS开发的新手。我想将图像上传到Facebook页面。当图像从Camera.Phen拿起来,我写了一个代码如下,但我得到一个错误“FBSession必须指定调用这个端点”。请给我解决方案。必须为在iOS中调用此端点指定一个打开的FBSession

我的代码等作为

-(IBAction)cameraButtonPressed:(id)sender 
{ 
if (FBSession.activeSession.isOpen) 
{ 
    UIImage *uploadImage=[UIImage imageNamed:@"2.png"]; 
    NSDictionary *params = [NSDictionary dictionaryWithObjectsAndKeys:accesstoken, @"CAACEdEose0cBAAFiJ51qowOOBfOcobm1E3v1ZBZCNYBSZAyspbQCXPUZCdZC620bRWYvChxGd96ZAOSMNyRZA9TYd9teQ9Q1m67wKx0n66YjTiYZBxczKIZB7t3tuLO5RYsNbZBfGweZCenMXRF7xOBE6DQ6450nmB0hRJzI8PrT18WZAfU878GhNryp5Vw4Up3jGZCwPWmuMxDZAoZAXVosyZBNKQ6i", 
          postingString, @"message",uploadImage,@"source", 
          nil]; 
    FBRequest *requestToPost = [[FBRequest alloc] initWithSession:nil 
                 graphPath:@"/me/feed" 
                 parameters:params 
                 HTTPMethod:@"POST"]; 
    FBRequestConnection *requestToPostConnection = [[FBRequestConnection alloc] init]; 
    [requestToPostConnection addRequest:requestToPost completionHandler:^(FBRequestConnection *connection, id result, NSError *error) 
    { 
     NSLog(@"facebook result >> %@", result); 
    }]; 
    [requestToPostConnection start]; 
} 
else 
{ 
    NSArray *permissions = [[NSArray alloc] initWithObjects: 
          @"user_likes", 
          @"read_stream", 
          @"publish_actions", 
          nil]; 
    FBSession *session = [[FBSession alloc] initWithPermissions:permissions]; 
    [FBSession setActiveSession:session]; 
} 
if([FBSession openActiveSessionWithAllowLoginUI:NO]) 
{ 
    UIImage *uploadImage=[UIImage imageNamed:@"2.png"]; 
    NSDictionary *params = [NSDictionary dictionaryWithObjectsAndKeys:accesstoken, @"CAACEdEose0cBAAFiJ51qowOOBfOcobm1E3v1ZBZCNYBSZAyspbQCXPUZCdZC620bRWYvChxGd96ZAOSMNyRZA9TYd9teQ9Q1m67wKx0n66YjTiYZBxczKIZB7t3tuLO5RYsNbZBfGweZCenMXRF7xOBE6DQ6450nmB0hRJzI8PrT18WZAfU878GhNryp5Vw4Up3jGZCwPWmuMxDZAoZAXVosyZBNKQ6i", 
          postingString, @"message",uploadImage,@"source", 
          nil]; 
    FBRequest *requestToPost = [[FBRequest alloc] initWithSession:nil 
                 graphPath:@"/me/feed" 
                 parameters:params 
                 HTTPMethod:@"POST"]; 
    FBRequestConnection *requestToPostConnection = [[FBRequestConnection alloc] init]; 
    [requestToPostConnection addRequest:requestToPost completionHandler:^(FBRequestConnection *connection, id result, NSError *error) 
    { 
     NSLog(@"facebook result >> %@", result); 
    }]; 
    [requestToPostConnection start]; 

} 
else 
{ 
    NSLog(@"Nothing to DO BYE"); 
} 

这里我的plist文件等作为

<key>CFBundleURLTypes</key> 
<array> 
    <dict> 
     <key>CFBundleTypeRole</key> 
     <string>Editor</string> 
     <key>CFBundleURLName</key> 
     <string></string> 
     <key>CFBundleURLSchemes</key> 
     <array> 
      <string>fb74549074886xxxx</string> 
     </array> 
    </dict> 
</array> 
<key>CFBundleVersion</key> 
<string>1.0</string> 
<key>FacebookAppID</key> 
<string>7454907xxxxxx</string> 
<key>FacebookDisplayName</key> 
<string>Cele­b­r­a­t­e­C­h­r­i­s­tmas</string> 
+0

嗨,这是KARTHIK终于ü使用我的代码,任何方式好,在这里你的问题是检查你的FBSession是否开放 – 2014-12-06 04:34:45

+0

@ Anbu.Karthik thnx bro最后你的代码对我有用。但我不知道锄头检查FBSession是否开放。但我可以从R&D做到。然后在这里回复你任何问题都会发生o不是。 – 2014-12-06 04:38:58

+0

k显示您的完整错误代码... – 2014-12-06 04:42:26

回答

1
-(IBAction)cameraButtonPressed:(id)sender 
{ 
    // here add your image did finish method 

    if ([[FBSession activeSession] isOpen]) { 
    /* 
    * if the current session has no publish permission we need to reauthorize 
    */ 
    if ([[[FBSession activeSession] permissions]indexOfObject:@"publish_stream"] == NSNotFound) { 

     [[FBSession activeSession] requestNewPublishPermissions:[NSArray arrayWithObjects: @"publish_stream",nil] defaultAudience:FBSessionDefaultAudienceFriends 
               completionHandler:^(FBSession *session,NSError *error){ 
                [self postData]; 
               }]; 

    }else{ 
     [self postData]; 
    } 
}else{ 

    /* 
    * open a new session with publish permission 
    */ 

    [FBSession openActiveSessionWithPublishPermissions:[NSArray arrayWithObjects: @"publish_stream", nil] 
             defaultAudience:FBSessionDefaultAudienceFriends 
              allowLoginUI:NO 
            completionHandler:^(FBSession *session, FBSessionState status, NSError *error) { 
             if (!error && status == FBSessionStateOpen) { 
              [self postData]; 
             }else{ 
              NSLog(@"error"); 
             } 
            }]; 
} 


} 



-(void)postData 
{ 
UIImage *uploadImage=[UIImage imageNamed:@"2.png"]; 
NSDictionary *params = [NSDictionary dictionaryWithObjectsAndKeys:accesstoken, @"CAACEdEose0cBAAFiJ51qowOOBfOcobm1E3v1ZBZCNYBSZAyspbQCXPUZCdZC620bRWYvChxGd96ZAOSMNyRZA9TYd9teQ9Q1m67wKx0n66YjTiYZBxczKIZB7t3tuLO5RYsNbZBfGweZCenMXRF7xOBE6DQ6450nmB0hRJzI8PrT18WZAfU878GhNryp5Vw4Up3jGZCwPWmuMxDZAoZAXVosyZBNKQ6i", 
         postingString, @"message",uploadImage,@"source", 
         nil]; 
FBRequest *requestToPost = [[FBRequest alloc] initWithSession:nil 
                graphPath:@"/me/feed" 
                parameters:params 
                HTTPMethod:@"POST"]; 
FBRequestConnection *requestToPostConnection = [[FBRequestConnection alloc] init]; 
[requestToPostConnection addRequest:requestToPost completionHandler:^(FBRequestConnection *connection, id result, NSError *error) 
{ 
    NSLog(@"facebook result >> %@", result); 
}]; 
[requestToPostConnection start]; 
} 
+0

当我在我的例子中写你的代码,然后没有发生。只有相机按钮按下。如果循环没有调用。 – 2014-12-06 05:26:40

+0

它也是Print'com.facebook.sdk:InvalidOperationException',原因:'FBSession:在日志错误中尝试对未打开的会话重新授权权限'。 – 2014-12-06 05:32:44

+0

然后首先打开sessioion' – 2014-12-06 05:50:15

相关问题