2010-11-17 71 views
4

当用代码创建一个Facebook对话框这样Facebook的对话框,注销和访问令牌(在Facebook的iOS SDK)

NSMutableDictionary* params = [NSMutableDictionary dictionaryWithObjectsAndKeys: apiKey, @"api_key", nil]; 
[facebook dialog:@"stream.publish" andParams:params andDelegate:self]; 

有使用会话的可能性?

我成功地在用户的信息墙上发布帖子,但是如何让用户注销? 此外,当我尝试访问当前用户信息时,我得到此错误。

{ 
    error = { 
     message = "An active access token must be used to query information about the current user."; 
     type = OAuthException; 
    }; 
} 

回答

3

我在viewDidLoad中

_facebook = [[Facebook alloc] init]; 

创建Facebook的对象我有一个的tableView。当用户点击一个条目,一个动作片会弹出3个选择

1从Facebook发送电子邮件

2分享在Facebook

3登出:只有当用户应该有已记录,但现在它在那里,它的工作原理。 我用

[_facebook logout:self]; 

而且

- (void)fbDidLogout is called. 

当用户点击 “在Facebook上共享”,这个代码运行

SBJSON *jsonWriter = [SBJSON new]; 
NSDictionary *actionLinks = [NSArray arrayWithObjects: 
           [NSDictionary dictionaryWithObjectsAndKeys: 
              @"Some text", @"text", 
             @"http://try.com",@"href", nil], nil]; 

NSString *actionLinksStr = [jsonWriter stringWithObject:actionLinks]; 

NSDictionary* attachment = [NSDictionary dictionaryWithObjectsAndKeys: 
             @"is using...", @"name", 
            @"It's an app….", @"caption", 
            @"Download!", @"description", 
            @"http://ituneslink", @"href", 
            nil]; 

NSString *attachmentStr = [jsonWriter stringWithObject:attachment]; 
NSMutableDictionary* params = [NSMutableDictionary dictionaryWithObjectsAndKeys: 
             API_KEY, @"api_key", 
             @"Message", @"user_message_prompt", 
             actionLinksStr, @"action_links", 
             attachmentStr, @"attachment",nil]; 

     [_facebook dialog:@"stream.publish" andParams:params andDelegate:self]; 

     [jsonWriter release]; 

在viewDidLoad中的方法,我也试图使用

_facebook.accessToken = [[NSUserDefaults standardUserDefaults] stringForKey:@"AccessToken"]; 
_facebook.expirationDate = (NSDate *) [[NSUserDefaults standardUserDefaults] objectForKey:@"ExpirationDate"]; 

_permissions = [[NSArray arrayWithObjects: @"read_stream", @"offline_access",nil] retain]; 

    if ([_facebook isSessionValid] == NO) { 
     [_facebook authorize:API_KEY permissions:_permissions delegate:self]; 
    } 

投入fbDidLogin:

[[NSUserDefaults standardUserDefaults] setObject:_facebook.accessToken forKey:@"AccessToken"]; 
[[NSUserDefaults standardUserDefaults] setObject:_facebook.expirationDate forKey:@"ExpirationDate"]; 

但fbDidLogin永远不会被调用。

编辑

我使用FB十月API(虽然我还没有发现与十一月一个解决方案)解决。

+0

有什么想法?我不知道如何继续...... – Sefran2 2010-11-20 08:56:08

+0

我已经解决了FB十月api的一些问题 – Sefran2 2010-12-21 14:49:21

+0

@Fran:在这种情况下,您应该已将此信息编辑到问题中。无论你以后做什么“解决一些问题”,都应该作为答案发布并被接受。 – 2011-04-08 15:26:52

0

看起来就像是一个权限问题,请尝试:

[facebook setPermission:@"offline_access"]; 
+0

访问令牌如何可能为空?我用NSLog打印它(@“%s”,facebook.accessToken);它的值为null。所以我无法检索当前的用户信息。 – Sefran2 2010-11-17 20:43:17

+0

在NSMutableDictionary * params = [NSMutableDictionary dictionaryWithObjectsAndKeys:apiKey,@“api_key”,nil]; [脸谱对话:@“stream.publish”andParams:params andDelegate:self];只使用api_key。我在哪里使用密钥? – Sefran2 2010-11-17 20:45:30

+0

我成功注销[facebook注销:自己];但由于accessToken始终返回空值,我不仅可以检索用户信息,还可以在需要时使用自定义操作表和“仅从fb注销”条目 – Sefran2 2010-11-17 21:14:00