我正在使用xmpp框架在我的应用程序中集成gtalk。我已使用OAuth 2.0成功验证了用户身份。现在我想使用访问令牌和用户电子邮件来验证xmpp流。我知道认证调用使用此方法authenticateWithPassword发送xmppStreamDidConnect方法。这需要密码,我想使用谷歌访问令牌完成它。有什么帮助吗?
答案 0 :(得分:1)
是的,你可以这样做,请按照以下步骤进行:
生成具有以下范围的访问令牌: https://www.googleapis.com/auth/googletalk
开始身份验证,如下所示:
//来自RFC 4616 - PLAIN SASL机制: // [authzid] UTF8NUL authcid UTF8NUL passwd // // authzid:授权标识 // authcid:身份验证身份(用户名) // passwd:authcid的密码
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;
}
一切都应该按预期工作,请发表评论。