首页 文章

iOS facebook SDK - 对话框 - 移动按钮

提问于
浏览
0

在我的应用程序中,用户可以发布到他的Facebook墙的链接 . 但是,我无法使用SDK中的“授权”方法登录用户,因为对于我的客户来说,facebook应用程序明确要求所有(基本)权限 . 因此我立即使用facebook对话框 .

NSMutableDictionary * params = [NSMutableDictionary dictionaryWithObjectsAndKeys:@“http://www.google.at”,@“link”,nil]; [self.facebook dialog:@“feed”andParams:params andDelegate:self];

这样可以正常工作但是在用户登录到他的墙后登录后,发布和取消按钮总是移出屏幕(见屏幕截图) . 当我向下滚动时,按钮立即再次离开屏幕 . 成功登录后不会发生这种情况 . 有人知道如何将按钮保留在屏幕上吗?否则用户无法发布链接 .

我找到了这个解决方案,但至少对我来说它不起作用:https://github.com/facebook/facebook-ios-sdk/issues/329

screenshot http://dl.dropbox.com/u/12018803/facebookPosting.png

1 回答

  • 3

    我有同样的问题,有很多时间丢失,找不到解决方案,但解决方法 .

    我有三种方法

    - (void) openMyFacebook
    - (void) fbDidLogin
    - (void) dialogFacebook
    

    我打电话给openMyFacebook

    - (void) openMyFacebook, 我分配Facebook并查看NSUserDefaults中是否已存储密钥,如果不是我在代理中调用 [facebook authorize:nil delegate:self]; - (void) fbDidLogin 我存储密钥(在facbook示例中相同) . 然后是诀窍 .

    发布facebook

    [facebook release];
     facebook = nil;
    

    然后使用存储的键再次启动 - (void) openMyFacebook .

    工作完美 .

    - (void) openMyFacebook {
    
        if (facebook == nil) {
    
            facebook = [[Facebook alloc] initWithAppId:@"xxxxxxxxxx"];
        }
    
        NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
        if ([defaults objectForKey:@"FBAccessTokenKey"] 
            && [defaults objectForKey:@"FBExpirationDateKey"]) {
            facebook.accessToken = [defaults objectForKey:@"FBAccessTokenKey"];
            facebook.expirationDate = [defaults objectForKey:@"FBExpirationDateKey"];
        }
    
        if (![facebook isSessionValid]) {
            [facebook authorize:nil delegate:self];
        }
        else {
    
            [self dialogFacebook];
        }
    
    }
    
    - (void)fbDidLogin {
        NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
        [defaults setObject:[facebook accessToken] forKey:@"FBAccessTokenKey"];
        [defaults setObject:[facebook expirationDate] forKey:@"FBExpirationDateKey"];
        [defaults synchronize];
    
    //release!!!!
        [facebook release];
        facebook = nil;
    //and start again
        [self openMyFacebook];
    }
    
    - (void) dialogFacebook {   
    
    NSMutableDictionary* params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
                                   kAppId, @"app_id",
                                   linkextern, @"link",
                                   facebookImageUrlString, @"picture",
                                   name, @"name",
    
                                   @" ",  @"message",
                                   nil];
    
    [facebook dialog:@"feed" andParams:params andDelegate:self];
    }
    

相关问题