使用google访问令牌进行Xmpp gtalk身份验证

时间:2013-07-05 13:07:39

标签: iphone ios xmpp google-talk

我正在使用xmpp框架在我的应用程序中集成gtalk。我已使用OAuth 2.0成功验证了用户身份。现在我想使用访问令牌和用户电子邮件来验证xmpp流。我知道认证调用使用此方法authenticateWithPassword发送xmppStreamDidConnect方法。这需要密码,我想使用谷歌访问令牌完成它。有什么帮助吗?

1 个答案:

答案 0 :(得分:1)

是的,你可以这样做,请按照以下步骤进行:

  1. 在google开发者控制台上注册您的应用。
  2. 生成具有以下范围的访问令牌: https://www.googleapis.com/auth/googletalk

  3. 开始身份验证,如下所示:

    • (BOOL)start:(NSError **)errPtr { XMPPLogTrace();

    //来自RFC 4616 - PLAIN SASL机制: // [authzid] UTF8NUL authcid UTF8NUL passwd // // authzid:授权标识 // authcid:身份验证身份(用户名) // passwd:authcid的密码

  4. NSString * accessToken = @“ACCESS-TOKEN-STRING-FROM Google”; // TODO:分配您生成的访问令牌     NSLog(@“stream supports:%@”,xmppStream.supportedAuthenticationMechanisms);    NSString * payload = [NSString stringWithFormat:@“\ 0%@ \ 0%@”,xmppStream.hostName,accessToken];     NSLog(@“payload =%@”,有效载荷);   NSString * base64 = [[payload dataUsingEncoding:NSUTF8StringEncoding] xmpp_base64Encoded];     NSXMLElement * auth = [NSXMLElement elementWithName:@“auth”xmlns:@“urn:ietf:params:xml:ns:xmpp-sasl”];     [auth addAttributeWithName:@“mechanism”stringValue:@“X-OAUTH2”];     [auth addAttributeWithName:@“auth:service”stringValue:@“oauth2”];     [auth addAttributeWithName:@“xmlns:auth”stringValue:@“https://www.google.com/talk/protocol/auth”];     [auth setStringValue:base64];

    [xmppStream sendAuthElement:auth];
    
    return YES;
    

    }

    一切都应该按预期工作,请发表评论。