2010-11-17 68 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