iOS QQ 제3자 등록 실현
그림:
다음은 qq 의 제3자 로그 인 이 어떻게 실현 되 는 지 에 대해 말씀 드 리 겠 습 니 다.
우선 홈 페이지 에 등록 하 세 요.
http://wiki.connect.qq.com
SDK 다운로드
SDK 다운로드 주소:
http://wiki.open.qq.com/wiki/mobile/SDK다운로드 하 다.
최신 버 전의 iOS 다운로드SDK_V2.9
2. SDK 의 디 렉 터 리 구조
다운로드 한 파일 구 조 는 다음 과 같 습 니 다.
---------------------------------------------------------------------------------------------------------------------
sample: 예제 코드
1. Tencent OpenAPI. framework 는 iOS SDK 의 헤더 파일 정의 와 구체 적 인 실현 을 포장 했다.
2. TencentOpenApi_iOS_Bundle. bundle 은 iOS SDK 에 필요 한 자원 파일 을 포 장 했 습 니 다.
3. Xcode 에서 프로젝트 만 들 기
새 공백 항목, 이름 TestQLogin
4. 프로젝트 에 iOS SDK 추가
1. iOS SDK 의 Tencent OpenAPI. framework 와 Tencent OpenApiIOS_Bundle. bundle 파일 을 응용 개발 디 렉 터 리 에 끌 어 다 놓 습 니 다.
2. 팝 업 상자 에서 다음 을 선택 하 십시오.
5. 의존 라 이브 러 리 추가
클릭 Project navigator 클릭 TARGETS --- > General ---> Linked Frameworks and Libraries
추가 클릭
SDK 가 의존 하 는 시스템 라 이브 러 리 파일 을 추가 합 니 다.각각
”Security.framework”,
“libiconv.dylib”,
“SystemConfiguration.framework”,
“CoreGraphics.Framework”、
“libsqlite3.dylib”、
“CoreTelephony.framework”、
“libstdc++.dylib”、
“libz.dylib”。
6. 필요 한 프로젝트 설정 속성 수정
1. 프로젝트 설정 의 "Build Settings" 란 에서 "Linking" 설정 영역 을 찾 아 "Other Linker Flags" 설정 항목 에 속성 값 "- fobc - arc" 를 추가 합 니 다.
효 과 는 다음 그림 과 같 습 니 다:
2. XCode 에서 프로젝트 설정 항목 을 선택 하고 "TARGETS" 란 을 선택 하 십시오. "info" 탭 의 "URL type" 에 새로운 "URL scheme" 을 추가 합 니 다. 새로운 scheme = tencent + appid (예 를 들 어 appid 가 123456 이면 tencent 123456) identifier 를 입력 하 십시오. tencenteopenapi.appid 가 어떻게 오 는 지 7 단 계 를 보 세 요.
7. 텐 센트 응용 보 에서 응용 프로그램 을 만 듭 니 다.
6 단계 설정 에 필요 한 appid 등 정 보 는 먼저 응용 보물 에서 응용 프로그램 을 만들어 야 얻 을 수 있 습 니 다.
먼저 사이트 에 접속:http://open.qq.com
응용 프로그램 을 만 듭 니 다. 응용 프로그램 상세 정보 에서 appid 를 볼 수 있 습 니 다.
신청 완료 후 반드시 테스트 qq 를 추가 해 야 합 니 다. 그렇지 않 으 면 심사 에 통과 하지 못 한 응용 프로그램 은 직접 로그 인 할 수 없습니다.
8. 코드 쓰기 시작
1. 방금 새로 만 든 프로젝트 를 열 고 app delegate 를 다시 쓰 는 두 가지 방법
다시 쓰기 전에 헤더 파일 가 져 오기
#import
openURL:
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation{
return [TencentOAuth HandleOpenURL:url];
}
handleOpenURL:
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url{
return [TencentOAuth HandleOpenURL:url];
}
2, 사용 할 viewController 에서 초기 화
tencenteOAuth = [TencenteOAuthalloc] initWithAppId: @ "당신 의 appid" and Delegate: self];
3, 설정 권한 목록
//4. 필요 한 권한 목록 을 설정 합 니 다. 여 기 는 가능 한 한 무엇 을 사용 하여 무엇 을 가 져 오 는 지 설정 합 니 다.
permissions= [NSArrayarrayWithObjects:@"get_user_info",@"get_simple_userinfo",@"add_t",nil];
4, 로그 인
[tencentOAuth authorize:permissionsinSafari:NO];
5, 코드 에서 Tencent Session Delegate 방법 구현
#pragma mark -- TencentSessionDelegate
/ / 로그 인 완료 호출
- (void)tencentDidLogin
{
resultLable. text = @ "로그 인 완료";
if (tencentOAuth.accessToken &&0 != [tencentOAuth.accessTokenlength])
{
// 로그 인 사용자 의 OpenID, Token 및 만 료 시간 기록
tokenLable.text =tencentOAuth.accessToken;
}
else
{
tokenLable. text = @ "로그 인 에 실 패 했 지만 accesstoken 을 가 져 오지 못 했 습 니 다";
}
}
/ / 비 네트워크 오류 로 로그 인 실패:
-(void)tencentDidNotLogin:(BOOL)cancelled
{
NSLog(@"tencentDidNotLogin");
if (cancelled)
{
resultLable. text = @ "사용자 로그 인 취소";
}else{
resultLable. text = @ "로그 인 실패";
}
} / / 네트워크 오류 로 로그 인 실패:
-(void)tencentDidNotNetWork
{
NSLog(@"tencentDidNotNetWork");
resultLable. text = @ "네트워크 연결 이 없습니다. 네트워크 를 설정 하 십시오";
}
- (void)didReceiveMemoryWarning {
[superdidReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
상기 방법 은 기본적으로 로그 인 을 실 현 했 습 니 다. 로그 인 에 성공 한 후에 사용자 정 보 를 어떻게 얻 는 지 고려 해 야 합 니 다.
사실 방법 은 간단 합 니 다. 저희 가 로그 인 성공 방법 에서 호출 을 하고 있 습 니 다.
[tencentOAuth getUserInfo];
그리고 시스템 은 하나의 방법 을 호출 할 것 이다.
-(void)getUserInfoResponse:(APIResponse *)response
{
NSLog(@"respons:%@",response.jsonResponse);
}
getUser InfoResponse 에서 필요 한 사용자 정 보 를 볼 수 있 습 니 다.
대략 코드 는 아래 와 같다.
<pre name="code" class="objc">#import "ViewController.h"
#import <TencentOpenAPI/TencentOAuth.h>
@interface ViewController ()<TencentSessionDelegate>
{
UIButton *qqLoginBtn;
TencentOAuth *tencentOAuth;
NSArray *permissions;
UILabel *resultLable;
UILabel *tokenLable;
}
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
//1, view
qqLoginBtn=[UIButton buttonWithType:UIButtonTypeRoundedRect];
qqLoginBtn.frame=CGRectMake(100, 50, 36, 36);
[qqLoginBtn setTitle:@" " forState:UIControlStateNormal];
[qqLoginBtn addTarget:self action:@selector(loginAct) forControlEvents:UIControlEventTouchDown];
[self.view addSubview:qqLoginBtn];
//2, lable
resultLable=[[UILabel alloc]initWithFrame:CGRectMake(30, 100, 200, 36)];
tokenLable=[[UILabel alloc]initWithFrame:CGRectMake(30, 150, 200, 36)];
[self.view addSubview:resultLable];
[self.view addSubview:tokenLable];
//3, TencentOAuth appid , deletegate self
// appid id “TARGETS” , “info” “URL type” “URL scheme”, scheme。 QQ 414319235
tencentOAuth=[[TencentOAuth alloc]initWithAppId:@"1104617535" andDelegate:self];
//4, , 。
permissions= [NSArray arrayWithObjects:@"get_user_info", @"get_simple_userinfo", @"add_t", nil];
}
#pragma mark -- login
-(void)loginAct
{
NSLog(@"loginAct");
[tencentOAuth authorize:permissions inSafari:NO];
}
#pragma mark -- TencentSessionDelegate
//
- (void)tencentDidLogin
{
resultLable.text = @" ";
if (tencentOAuth.accessToken && 0 != [tencentOAuth.accessToken length])
{
// OpenID、Token
tokenLable.text = tencentOAuth.accessToken;
[tencentOAuth getUserInfo];
}
else
{
tokenLable.text = @" accesstoken";
}
}
// :
-(void)tencentDidNotLogin:(BOOL)cancelled
{
NSLog(@"tencentDidNotLogin");
if (cancelled)
{
resultLable.text = @" ";
}else{
resultLable.text = @" ";
}
}
// :
-(void)tencentDidNotNetWork
{
NSLog(@"tencentDidNotNetWork");
resultLable.text = @" , ";
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
-(void)getUserInfoResponse:(APIResponse *)response
{
NSLog(@"respons:%@",response.jsonResponse);
}
@end
9. 리 얼 테스트 효과
로그 인 창 열기:
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
로그 인 중
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
로그 인 성공
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
예제 코드 qq 군 에 업로드 414319235 다운로드 받 으 셔 야 돼 요.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Swift의 패스트 패스Objective-C를 대체하기 위해 만들어졌지만 Xcode는 Objective-C 런타임 라이브러리를 사용하기 때문에 Swift와 함께 C, C++ 및 Objective-C를 컴파일할 수 있습니다. Xcode는 S...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.