iOS QQ 제3자 등록 실현

12752 단어 iosqqsdk제3자 등록
우 리 는 앱 이 로그 인 할 때 QQ, 위 챗, 웨 이 보 등의 제3자 가 로그 인 하 는 것 을 자주 볼 수 있다.
그림:
iOS QQ第三方登实现_第1张图片
다음은 qq 의 제3자 로그 인 이 어떻게 실현 되 는 지 에 대해 말씀 드 리 겠 습 니 다.
우선 홈 페이지 에 등록 하 세 요.
http://wiki.connect.qq.com
SDK 다운로드
SDK 다운로드 주소:
 http://wiki.open.qq.com/wiki/mobile/SDK다운로드 하 다.
iOS QQ第三方登实现_第2张图片
최신 버 전의 iOS 다운로드SDK_V2.9
2. SDK 의 디 렉 터 리 구조
다운로드 한 파일 구 조 는 다음 과 같 습 니 다.

---------------------------------------------------------------------------------------------------------------------
sample: 예제 코드
1. Tencent OpenAPI. framework 는 iOS SDK 의 헤더 파일 정의 와 구체 적 인 실현 을 포장 했다.
2. TencentOpenApi_iOS_Bundle. bundle 은 iOS SDK 에 필요 한 자원 파일 을 포 장 했 습 니 다.
3. Xcode 에서 프로젝트 만 들 기
새 공백 항목, 이름 TestQLogin
iOS QQ第三方登实现_第3张图片
iOS QQ第三方登实现_第4张图片
4. 프로젝트 에 iOS SDK 추가
1. iOS SDK 의 Tencent OpenAPI. framework 와 Tencent OpenApiIOS_Bundle. bundle 파일 을 응용 개발 디 렉 터 리 에 끌 어 다 놓 습 니 다.
2. 팝 업 상자 에서 다음 을 선택 하 십시오.
iOS QQ第三方登实现_第5张图片
5. 의존 라 이브 러 리 추가
클릭 Project navigator 클릭 TARGETS --- > General  ---> Linked Frameworks and Libraries
추가 클릭
iOS QQ第三方登实现_第6张图片
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" 를 추가 합 니 다.
iOS QQ第三方登实现_第7张图片
효 과 는 다음 그림 과 같 습 니 다:
iOS QQ第三方登实现_第8张图片
2. XCode 에서 프로젝트 설정 항목 을 선택 하고 "TARGETS" 란 을 선택 하 십시오. "info" 탭 의 "URL type" 에 새로운 "URL scheme" 을 추가 합 니 다. 새로운 scheme = tencent + appid (예 를 들 어 appid 가 123456 이면 tencent 123456) identifier 를 입력 하 십시오. tencenteopenapi.appid 가 어떻게 오 는 지 7 단 계 를 보 세 요.
iOS QQ第三方登实现_第9张图片
7. 텐 센트 응용 보 에서 응용 프로그램 을 만 듭 니 다.
6 단계 설정 에 필요 한 appid 등 정 보 는 먼저 응용 보물 에서 응용 프로그램 을 만들어 야 얻 을 수 있 습 니 다.
먼저 사이트 에 접속:http://open.qq.com
응용 프로그램 을 만 듭 니 다. 응용 프로그램 상세 정보 에서 appid 를 볼 수 있 습 니 다.
iOS QQ第三方登实现_第10张图片
신청 완료 후 반드시 테스트 qq 를 추가 해 야 합 니 다. 그렇지 않 으 면 심사 에 통과 하지 못 한 응용 프로그램 은 직접 로그 인 할 수 없습니다.
iOS QQ第三方登实现_第11张图片
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. 리 얼 테스트 효과
로그 인 창 열기:
iOS QQ第三方登实现_第12张图片
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
로그 인 중
iOS QQ第三方登实现_第13张图片
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
로그 인 성공
iOS QQ第三方登实现_第14张图片
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
예제 코드 qq 군 에 업로드 414319235  다운로드 받 으 셔 야 돼 요.

좋은 웹페이지 즐겨찾기