2012-01-23 91 views
0

我正在關注facebook url中提供的信息。它的工作很好,如果facebook應用程序不在設備上。
考慮Facebook應用不在設備上:我正在授權Facebook及其開放的Safari瀏覽器。我授權應用程序,回到ios應用程序,它調用FBSessionDelegate中的委託「fbDidLogin」。我正在保存上面URL中提到的訪問令牌和過期日期。然後,我可以發佈它的Facebook。這工作正常。
現在,facebook應用程序可在設備上登錄:當我打電話「授權」時,它會打開Facebook應用程序並授權該應用程序,然後返回到ios應用程序。但它並沒有調用「fbDidLogin」委託方法。我應該如何識別或捕獲訪問令牌和到期日期?我正在寫下面的代碼:
facebook = [[Facebook alloc] initWithAppId:FB_APPID andDelegate:self];ios5 - 當facebook應用程序已在設備上時發佈到facebook

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
if ([defaults objectForKey:@"FBAccessTokenKey"] 
    && [defaults objectForKey:@"FBExpirationDateKey"]) 
{ 
    facebook.accessToken = [defaults objectForKey:@"FBAccessTokenKey"]; 
    facebook.expirationDate = [defaults objectForKey:@"FBExpirationDateKey"]; 
} 

NSArray* permissions = [NSArray arrayWithObjects:@"publish_stream",nil]; 
if (![facebook isSessionValid]) 
{ 
    [facebook authorize:permissions]; 
} 



- (void)fbDidLogin { 
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    [defaults setObject:[facebook accessToken] forKey:@"FBAccessTokenKey"]; 
    [defaults setObject:[facebook expirationDate] forKey:@"FBExpirationDateKey"]; 
    [defaults setBool:YES forKey:@"IIRY_FACEBOOK"];   
    [defaults synchronize]; 
} 

有人能指出我犯的錯誤嗎?

回答

0

找到了解決方案。問題是Facebook應用程序中提到的包ID和我的應用程序包ID不一樣,所以它不起作用。 Look the URL to know more

0

其實當你點擊授權,然後它會打開Safari瀏覽器,如果有設備上的Facebook應用程序,那麼它將打開Facebook應用程序,否則它將在Safari瀏覽器中打開Facebook。如果你不想打開safari和facebook應用程序,那麼在facebook.m中將這個語句改變到它調用NO的地方。

[self authorizeWithFBAppAuth:NO safariAuth:NO]; 
+0

但我仍然想使用默認功能而不更改Facebook代碼。但是根據facebook的文檔,他們沒有提到如何處理這種情況。很糟糕。 – Satyam

相關問題