2012-07-12 76 views
7

使用xmppstream對象Facebook的身份驗證訪問令牌我正在開發使用xmppframework.I的Facebook聊天應用Facebook的了訪問令牌,但
這種訪問不是由xmppstream對象進行身份驗證:我怎麼可以在iPhone

這裏是我的setupStream方法

- (void)setupStream 
{ 
    XMPPStream *xmppStream=[[XMPPStream alloc] initWithFacebookAppId:@"443170809037796"]; 
} 

這裏是我的連接方法

-(BOOL)connect1 
{ 
    NSLog(@"connect1"); 
    NSError *error = nil; 
    if(![xmppStream isDisconnected]) 
    { 
     NSLog(@"isDisconnected"); 
     return YES; 
    } 
    if (![xmppStream connect:&error]) 
    { 
     UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Error connecting fb" 
                  message:@"See console for error details." 
                  delegate:nil 
                cancelButtonTitle:@"Ok" 
                otherButtonTitles:nil]; 
     [alertView show]; 
     return NO; 
    } 
    return YES; 
} 

這裏是我的認證

- (void)xmppStreamDidConnect:(XMPPStream *)sender 
{ 
    isXmppConnected = YES; 
    NSError *error = nil; 
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    [xmppStream authenticateWithFacebookAccessToken:[defaults    objectForKey:@"FBAccessTokenKey"] error:&error];   
} 
當我運行這個程序,我正在休耕錯誤

didNotAuthenticate

任何一個可以解決我的問題PLZ

xmppStreamDidconnect委託方法。

+0

如果你解決了這個問題,建議請。我也有問題。謝謝 – Shamsiddin 2012-11-19 11:18:22

回答

0
http://benbiddington.wordpress.com/2010/04/23/facebook-graph-api-getting-access-tokens/ 


http://www.raywenderlich.com/1488/how-to-use-facebooks-new-graph-api-from-your-iphone-app 

如何使用圖形API認證用戶

如何OAuth認證作品 爲了認證用戶的Facebook,圖形API使用新的OAuth 2.0協議。別擔心 - 這個名字聽起來很有意思,但它的工作方式其實很簡單。 這個想法是你使用Facebook開發者的門戶製作一個應用程序,當你獲得一個稱爲API密鑰的應用程序的唯一ID時。 然後,當您想要將用戶登錄到Facebook時,您需要在Web瀏覽器中轉到以下URL: https://graph.facebook.com/oauth/authorize? CLIENT_ID = [您的API密鑰] & REDIRECT_URI = http://www.facebook.com/connect/login_success.html& 範圍= [延伸你想要的權限] & 類型= USER_AGENT & 顯示=觸及 用戶將看到一個標準的Facebook登錄頁面,他們可以在他們的用戶名進入和密碼,並給予任何所需的權限。 你不需要自己實現一個redirect_uri - 你可以使用Facebook上預設的一個,如上所示。預設回調會返回給您一個訪問令牌,這是您將來需要的所有內容。 當用戶登錄時,Facebook會在Cookie中存儲一些關於登錄的信息。因此,下次嘗試登錄時,如果Cookie尚未過期,登錄將自動完成,無需用戶干預!

1

的Facebook聊天使用安全連接從而連接方法應該是這樣的

- (void)xmppStreamDidConnect:(XMPPStream *)sender 
{ 
    DDLogVerbose(@"%@: %@", THIS_FILE, THIS_METHOD); 

    isXmppConnected = YES; 

    NSError *error = nil; 
    //facebook connection 
    if (_streamType == AAConnectStreamTypeFacebook) { 

     if (![xmppStream isSecure]) 
     { 

      NSError *error = nil; 
      BOOL result = [xmppStream secureConnection:&error]; 

      if (result == NO) 
      { 
       DDLogError(@"%@: Error in xmpp STARTTLS: %@", THIS_FILE, error); 

      } 
     } 
     else 
     { 

      NSError *error = nil; 
      BOOL result = [xmppStream authenticateWithFacebookAccessToken:FBSession.activeSession.accessTokenData.accessToken error:&error]; 

      if (result == NO) 
      { 
       DDLogError(@"%@: Error in xmpp auth: %@", THIS_FILE, error); 

      } 
     } 
    } 
    else if (![[self xmppStream] authenticateWithPassword:password error:&error]) 
    { 

     DDLogError(@"Error authenticating: %@", error); 
    } 
} 
+0

什麼是「_streamType == AAConnectStreamTypeFacebook」我在這個 – 2014-04-07 09:24:10

+0

其流類型類變量中收到錯誤,因爲如果您使用任何其他服務,如谷歌聊天,它的不同連接/授權模式 – 2014-04-07 10:08:12

+0

如何將消息從應用程序發送到fb ? – 2014-04-07 14:33:06