2013-08-04 92 views
0

因此,當我登錄到ios的facebook集成時,我的代碼效果很好。我獲得了一個有權讀取和寫入的活動訪問令牌,並且實際上我已經寫入了人們的牆壁以及應用程序的內容。但是,當我的應用程序使用Safari瀏覽器來驗證用戶的登錄憑據時,常見錯誤是:「必須使用活動訪問令牌查詢有關當前用戶的信息。」我只使用iOS Facebook的Facebook集成獲取Facebook活動訪問令牌

我不明白的是爲什麼我只能從ios facebook集成中獲取我的訪問代碼。

if (![FBSession activeSession].isOpen) { 

    [self openSession]; 
} 

我的方法的openSession定義如下

- (void)openSession 
{ 
    //create the permissions array 
    NSArray *permissions = 
    [NSArray arrayWithObjects:@"email", @"basic_info", nil]; 


    [FBSession openActiveSessionWithReadPermissions: permissions 
            allowLoginUI:YES 
           completionHandler: ^(FBSession *session, FBSessionState status, NSError *error) { 
            NSLog(@"\n\nopenSession called error = %@\n\n\n",error); 

           }]; 

}

我接下來要繼續:不管怎麼說,我的相關代碼下面是由當前視圖控制器在加載時執行viewDidLoad方法

[FBRequestConnection 
     startForMeWithCompletionHandler:^(FBRequestConnection *connection, 
            id<FBGraphUser> user, 
            NSError *error) 
    { 
     NSLog(@"error requestion connection: %@",error); 
     }]; 

我期待着回覆。提前致謝。

回答

1

使用Facebook SDK。

NSString *fbAccessToken = [[[FBSession activeSession] accessTokenData] accessToken]; 

如果你喜歡點語法,

NSString *fbAccessToken = [FBSession activeSession].accessTokenData.accessToken;` 

我希望,它將工作在V

+0

當我把這種方法,它返回null – kyleC

+0

把這行代碼放到這個方法 - (無效)sessionStateChanged:(FBSession *)會話 狀態:(FBSessionState)狀態 錯誤:(NSError *)錯誤 { switch(state){ case FBSessionStateOpen: {NSString * fbAccessToken = [[[FBSession activeSession] accessTokenData] accessToken];} –

+0

我不太清楚你明白我的問題。您提供給我的方法只會在state == FBSessionStateOpen的情況下調用方法。當我在應用程序中使用safari登錄Facebook而不是ios集成時,這絕不會是這種情況,因此您的代碼永遠不會運行或更改任何內容。 – kyleC