【问题标题】:An open FBSession must be specified for calls to this endpoint in iOS在 iOS 中,必须为调用此端点指定一个打开的 FBSession
【发布时间】:2014-12-06 04:30:46
【问题描述】:

我是 iOS 开发的新手。我想将图像上传到 Facebook 页面。从相机中提取图像时。为此,我编写了如下代码,但出现错误“必须为调用此端点指定 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>

【问题讨论】:

  • 嗨,这是 karthik,你终于使用了我的代码,无论如何都很好,这里你的问题是检查你的 FBSession 是否打开
  • @Anbu.Karthik thnx bro 最后你的代码对我有用。但我不知道检查 FBSession 是否打开。但我可以通过研发来完成。然后在这里回复你如果是否出现任何问题。
  • k 显示完整的错误代码...
  • @Anbu.Karthik 我在这里编辑我的完整代码并编辑我的 Plist 文件然后它是直接打印没什么可做的请给我解决方案。
  • @Anbu.Karthik 当我按下相机按钮时,它会在 Facebook 页面上向我显示消息,就像你已经授权庆祝圣诞节一样。

标签: ios facebook fb-graph


【解决方案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];
}

【讨论】:

  • 当我在我的示例中编写您的代码时,什么也没有发生。仅按下相机按钮。和 If 循环没有调用。
  • 它也是 Print 'com.facebook.sdk:InvalidOperationException',原因:'FBSession:尝试在未打开的会话上重新授权权限'在日志错误中。
  • 然后先打开会话'
  • 我打开会话然后 Eroor 发生,因为必须为调用此端点指定打开的 FBSession。
猜你喜欢
  • 2016-03-09
  • 1970-01-01
  • 2015-01-29
  • 1970-01-01
  • 2016-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多