新浪微博、QQ、微信をそれぞれ埋め込んで第三者の授権登録をして顔のニックネームなどの情報を取得します

7543 ワード

新浪微博、QQ、微信をそれぞれ埋め込んで第三者の授権登録をしてアバターのニックネームなどの情報を取得した原作者:http://blog.csdn.net/liwenjie0912/article/details/51058941
以下に示す3つのライセンスログインは、share sdkまたは友盟の他のものではなく、それぞれ埋め込まれています.
一、sdkアドレスのダウンロード
1.新浪微博新浪微博SDKダウンロード
2.QQ SDKダウンロード
3.微信微信SDK
二、コード作成
インポートライブラリをどのように埋め込むか、keyを構成するかは言いません.
Applegateでは
[objc]view plain copy CODEでコードシートを見て私のコードシートに派生
  • (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { return [WXApi handleOpenURL:url delegate:(id ) self] | return [ WeiboSDK handleOpenURL:url delegate:(id ) self]|return [TencentOAuth HandleOpenURL:url]; }

  • [objc]view plain copy CODEでコードシートを見て私のコードシートに派生
  • (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url { return [ WeiboSDK handleOpenURL:url delegate:(id ) self ]|[WXApi handleOpenURL:url delegate:(id ) self]|[TencentOAuth HandleOpenURL:url]; }

  • (1)新浪微博
    まず新浪微博が提供したオブジェクト呼び出しを利用して
    [objc]view plain copy CODEでチップを見て私のチップWBAuthorizeRequest*request=[WBAuthorizeRequest request];request.redirectURI = kRedirectURI; request.scope = @"all"; request.userInfo = @{@"myKey": @"myValue"}; [WeiboSDK sendRequest:request];
    kRedirectURLは、新浪微博で申請したときに記入したurlです.
    ライセンスが成功するとこのdelegateにtokenやopenIdなどの情報が返されます
    [objc]view plain copy CODEでチップを見て私のチップに派生//呼び出しが成功するとこの方法でtokenやopenIdなどの情報を得ることができます-(void)didReceiveWeiboResponse:(WBBaseResponse*)response{APP_DELEGATE.loginVC=nil;if([response isKindOfClass:WBAuthorizeResponse.class]){if((int)response.statusCode==0){if((int)response.statusCode==0){ NSString *toke = [(WBAuthorizeResponse *)response userID]; NSString *openId = [(WBAuthorizeResponse *)response accessToken];
            [WBHttpRequest requestWithAccessToken:toke url:@"https://api.weibo.com/2/users/show.json" httpMethod:@"GET" params:[NSDictionary  dictionaryWithObject:openId forKey:@"uid"] delegate:(id)self withTag:@"hello_xixi"];  
              
        }  
    }  
    

    }
    tokenとopenIdを使えば基本的な情報が得られます
    [objc]view plain copy CODEでコードシートを見て私のコードシートに派生
  • (void)request:(WBHttpRequest*)request didFinishLoadingWithDataResult:(NSData*)data{NSDictionary*content=[NSJSONSSerialization JSOnObjectWithData:data options:NSJSOnReadingMutableContainers error:nil]//データフォーマットの変換NSLog(@'%@',content);//ここでいくつかのBaseInfo}
  • を返します
    名前を見て何がわかるかを判断するための他のdelegateメソッドも提供されています
    [objc]view plain copy CODEでコードシートを見て私のコードシートに派生
  • (void)request:(WBHttpRequest *)request didReceiveResponse:(NSURLResponse *)response { NSLog(@"%@",response); }
  • (void)request:(WBHttpRequest *)request didFinishLoadingWithResult:(NSString *)result { NSLog(@"%@",result); }
  • (void)request:(WBHttpRequest*)request didFailWithError:(NSError*)error{NSLog(@"%@",error);}後からこれらの基本的な情報を持って業務に応じていくつかの操作を行うことができます
  • 新浪微博end
    ------------------------------------------------------------------------------------------------------
    (2)QQ
    まず最初のステップは、QQが提供するオブジェクトでQQクライアントを呼び出すことです.
    [objc]view plain copy CODEでコードシートを見て私のコードシートに派生する////このkeyは自分の必要に応じて配列の中に入るNSArray*permissions=[NSArrayarrayWithObjects:kOPEN_PERMISSION_GET_USER_INFO,kOPEN_PERMISSION_GET_SIT_SIMPPLE_USER_INFO,nil nil];_tencentOAuth=[TencentOAuth alloc] initWithAppId:qAAppKeandDelegateteteeeeeeAbAppId:qAppKey:(id)self];[_tencentOAuthauthorize:permissions];その中のqAppKeyは申請時に提供されたkeyである
    その後delegateでtokenとopenIdを取得します
    [objc]view plain copy CODEでコードシートを見て私のコードシートに派生
  • (void)tencentDidLogin{if(_tencentOAuth.accessToken&&0!=[_tencentOAuth.accessToken length]){//成功したらgetUserInfo[_tencentOAuthgetUserInfo]}}else{//失敗}}成功したらgetUserInfoという方法を呼び出し続けることができ、方法名を見ると何をしているのかわかる
  • 呼び出しに成功すると、次のdelegateメソッドに戻ります.
    [objc]view plain copy CODEでチップを見て私のチップに派生-(void)getUserInfoResponse:(APIresponse*)response{NSLog(@"%@",response);NSLog(@"%@",response.jsonResponse);//ここでresponseにはUser Base Info}があります
    他にもいくつかの方法があります
    [objc]view plain copy CODEでコードシートを見て私のコードシートに派生
  • (void)tencentDidNotLogin:(BOOL)cancelled{if(cancelled){NSLog(@"ログイン解除");}else{NSLog(@"ログイン失敗")}}
  • (void)tencentDidNotNetWork{NSLog(@「ネットワーク接続なし、ネットワークを設定してください」);
  • (void)tencentDidLogout{NSLog(@「ログイン終了成功」);}QQ end
  • ------------------------------------------------------------------------------------------------------
    (3)微信
    微信はtokenとopenIdを取得するのは新浪微博とQQと少し違います.それはまずcodeを取得し、それからこのcoedについてtokenとopenIdを取得することができます.
    まず微信クライアントを呼び出す
    [objc]view plain copy CODEでチップを見て私のチップSendAuthReq*req=[[SendAuthReq alloc]init];req.scope=@"snsapi_userinfo,snsap_base"//QQと同じように自分の必要に応じてreq.state=wAppState;req.openID=wAppKey;[WXApi sendReq:req];
    ライセンスが戻ってくるとエージェントメソッドでcodeが取得されます
    [objc]view plain copy CODEでコードシートを見て私のコードシートに派生
  • (void)onResp:(BaseResp *)resp { if (resp.errCode == 0) { NSLog(@"%@",resp); if ([resp isKindOfClass:[SendAuthResp class]]) { SendAuthResp *sr = (SendAuthResp *)resp; NSLog(@"%@",sr.code); [self getAccess_token:sr.code]; } } }

  • タイプ判断を加えるには共有もこの方法をコールバックするので、オブジェクトタイプを判断するにはcodeを取得した後、提供されたurlに基づいてtokenとopenIdを取得することができます.
    [objc]view plain copy CODEでチップを見て私のチップ-(void)getAccessToken:(NSString*)code{NSString*url=[NSString stringWithFormat:@]https://api.weixin.qq.com/sns/oauth2/access_token?appid=%@&secret=%@&code=%@&grant_type=authorization_code",wAppKey,wAppSecret,code];
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{  
        NSURL *zoneUrl = [NSURL URLWithString:url];  
        NSString *zoneStr = [NSString stringWithContentsOfURL:zoneUrl encoding:NSUTF8StringEncoding error:nil];  
        NSData *data = [zoneStr dataUsingEncoding:NSUTF8StringEncoding];  
        dispatch_async(dispatch_get_main_queue(), ^{  
            if (data) {  
                NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];  
                NSLog(@"%@",dic);  
                 
                NSString *token = [dic objectForKey:@"access_token"];  
                NSString *openId = [dic objectForKey:@"openid"];  
                  
                [self getUserInfo:token andOpenId:openId];  
            }  
        });  
    });  
    

    }
    tokenとopenIdがあればUser Base Infoも取得できます
    [objc]view plain copy CODEでチップを見て私のチップに派生-(void)getUserInfo:(NSString*)tokenArg andOpenId:(NSString*)openIdArg{NSString*url=[NSString stringWithFormat:@]https://api.weixin.qq.com/sns/userinfo?access_token=%@&openid=%@",self.access_token,self.openid];
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{  
        NSURL *zoneUrl = [NSURL URLWithString:url];  
        NSString *zoneStr = [NSString stringWithContentsOfURL:zoneUrl encoding:NSUTF8StringEncoding error:nil];  
        NSData *data = [zoneStr dataUsingEncoding:NSUTF8StringEncoding];  
        dispatch_async(dispatch_get_main_queue(), ^{  
            if (data)  
            {  
                NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];  
                NSLog(@"%@",dic);  
            }  
        });  
    });  
    

    }
    微信end
    三、まとめ
    1.QQと新浪微博のSDKの書き方はあまり違わず、ライセンスが戻ってきたらtokenとopenIdを手に入れることができます.
    微信はまずcodeを取得しなければtokenとopenIdを取得できない.
    2.QQと新浪微博は代理方法と対象を提供してデータのカプセル化をして、微信は1つのurlを提供して開発者に自分でurlをつなぎ合わせて、自分で方法を定義します.(個人は微信のやり方が好きです)