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);
}];
我期待着回覆。提前致謝。
當我把這種方法,它返回null – kyleC
把這行代碼放到這個方法 - (無效)sessionStateChanged:(FBSession *)會話 狀態:(FBSessionState)狀態 錯誤:(NSError *)錯誤 { switch(state){ case FBSessionStateOpen: {NSString * fbAccessToken = [[[FBSession activeSession] accessTokenData] accessToken];} –
我不太清楚你明白我的問題。您提供給我的方法只會在state == FBSessionStateOpen的情況下調用方法。當我在應用程序中使用safari登錄Facebook而不是ios集成時,這絕不會是這種情況,因此您的代碼永遠不會運行或更改任何內容。 – kyleC