An open FBSession must be specified for calls to this endpoint in iOS

1.9k views Asked by At

i am newbie in iOS Development. I want to Upload an Image on to Facebook Page.When image was Picked up From Camera.for this I write a code for as Below but i got an error "FBSession must be specified for calls to this endpoint". Please Give me Solution for it.

My Code like as

-(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");
}

Here My PList File Like as

<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>
1

There are 1 answers

4
Anbu.Karthik On
-(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];
}