2013-07-05 2 views
0

내 응용 프로그램에 gtalk를 통합하기 위해 xmpp 프레임 워크를 사용하고 있습니다. OAuth 2.0을 사용하여 사용자를 성공적으로 인증했습니다. 이제 xmpp 스트림을 인증하기 위해 액세스 토큰과 사용자 전자 메일을 사용하려고합니다. 인증 호출이이 메소드 authenticateWithPassword를 사용하여 xmppStreamDidConnect 메소드를 전송 받았다는 것을 알고 있습니다. 이 암호가 필요합니다, 나는 그것을 Google 액세스 토큰을 사용하여 완료하고 싶습니다. 어떤 도움이 필요합니까?Google 토크 토큰을 이용한 Xmpp gtalk 인증

답변

1

예는 단계를 따르십시오 수행 할 수 있습니다

  1. 구글 개발자 콘솔에 앱을 등록합니다. 다음으로 https://www.googleapis.com/auth/googletalk

  2. 개시 인증 :

    • (BOOL) 시작 :
    • 다음 범위로의 액세스 토큰을 생성 (NSError **) errPtr { XMPPLogTrace을();

    // RFC 4616에서 - PLAIN SASL 메커니즘 : // [authzid 값] UTF8NUL authcid UTF8NUL passwd를 // // authzid 값 : 인증 정체성 // authcid : 인증 신원 (사용자 이름) // passwd를 "ACCESS-TOKEN-STRING-FROM 구글"@ authcid

있는 NSString * accessToken = 암호; // TODO : "%의 @ 스트림 지원", xmppStream 생성 된 액세스 토큰 NSLog (@를 할당합니다. supportedAuthenticationMechanisms); NSString * payload = [NSString stringWithFormat : @ "0 % @ \ 0 % @", xmppStream.hostName, accessToken]; NSLog (@ "payload = % @", payload); NSString * base64 = [[payload dataUsingEncoding : NSUTF8StringEncoding] xmpp_base64Encoded]; NSXMLElement * auth = [NSXMLElement 요소 이름 : @ "auth"xmlns : @ "urn : ietf : params : xml : ns : xmpp-sasl"]; [auth addAttributeWithName : @ "메커니즘"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; 

}

모든 것이 예상대로 의견을 주시기 바랍니다 작동합니다.

관련 문제