2012-07-12 78 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