iOS-QQ的分享與登錄

QQ登錄與分享 注意:修改必要的工程配置屬性。在工程配置中的“Build Settings”一欄中找到“Linking”配置區(qū)雌澄,給“Other Linker Flags”配置項(xiàng)添加屬性值“-fobjc-arc”贱案。
1、首先導(dǎo)入QQ的SDK


2、導(dǎo)入需要的framework 添加SDK依賴的系統(tǒng)庫(kù)文件腰懂。分別是”Security.framework”, “l(fā)ibiconv.dylib”刁俭,“SystemConfiguration.framework”,“CoreGraphics.Framework”散劫、“l(fā)ibsqlite3.dylib”稚机、“CoreTelephony.framework”、“l(fā)ibstdc++.dylib”获搏、“l(fā)ibz.dylib”赖条。
3、添加URL Type

4常熙、在plist文件里添加iOS9 URL Schemes 白名單

<key>LSApplicationQueriesSchemes</key>
    <array>
        <string>wechat</string>
        <string>weixin</string>
        <string>sinaweibohd</string>
        <string>sinaweibo</string>
        <string>sinaweibosso</string>
        <string>weibosdk</string>
        <string>weibosdk2.5</string>
        <string>mqqapi</string>
        <string>mqq</string>
        <string>mqqOpensdkSSoLogin</string>
        <string>mqqconnect</string>
        <string>mqqopensdkdataline</string>
        <string>mqqopensdkgrouptribeshare</string>
        <string>mqqopensdkfriend</string>
        <string>mqqopensdkapi</string>
        <string>mqqopensdkapiV2</string>
        <string>mqqopensdkapiV3</string>
        <string>mqzoneopensdk</string>
        <string>wtloginmqq</string>
        <string>wtloginmqq2</string>
        <string>mqqwpa</string>
        <string>mqzone</string>
        <string>mqzonev2</string>
        <string>mqzoneshare</string>
        <string>wtloginqzone</string>
        <string>mqzonewx</string>
        <string>mqzoneopensdkapiV2</string>
        <string>mqzoneopensdkapi19</string>
        <string>mqzoneopensdkapi</string>
        <string>mqzoneopensdk</string>
        <string>alipay</string>
        <string>alipayshare</string>
    </array>

5纬乍、向終端程序注冊(cè)第三方應(yīng)用,并在第三方應(yīng)用實(shí)現(xiàn)從qq返回在AppDelegate.m中引入#import頭文件裸卫,然后寫(xiě)入如下:

- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary*)options{    [TencentOAuth HandleOpenURL:url];    return YES;}- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url{    [TencentOAuth HandleOpenURL:url];        return YES;}- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {    [TencentOAuth HandleOpenURL:url];    return YES;}

6仿贬、QQ分享—>在控制器里面添加分享代碼

#import <TencentOpenAPI/TencentOAuth.h>
#import <TencentOpenAPI/TencentMessageObject.h>
#import <TencentOpenAPI/TencentApiInterface.h>
#import <TencentOpenAPI/QQApiInterfaceObject.h>
#import <TencentOpenAPI/QQApiInterface.h> t遵循TencentSessionDelegate協(xié)議
TencentOAuth *_tencentOAuth = [[TencentOAuth alloc] initWithAppId:@"xxxxxxxxxxxx" andDelegate:self];如果不寫(xiě)TencentOAuth *_tencentOAuth = [[TencentOAuth alloc] initWithAppId:@"xxxxxxxxxxxx" andDelegate:self]; 
//會(huì)提示(EQQAPIAPPNOTREGISTED )App未注冊(cè)的錯(cuò)誤
//分享給QQ好友文字
- (void)sendTextMessageToQQ
{
    QQApiTextObject *txtObj = [QQApiTextObject objectWithText:@"QQ互聯(lián)測(cè)試"];
    SendMessageToQQReq *req = [SendMessageToQQReq reqWithContent:txtObj];
    //將內(nèi)容分享到qq
    QQApiSendResultCode sent = [QQApiInterface sendReq:req];
    
    [self handleSendResult:sent];
}
- (void)sendImageMessageToQQ
{
    NSString *path = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"IconWX"];
    NSData* data = [NSData dataWithContentsOfFile:path];
    
    QQApiImageObject* img = [QQApiImageObject objectWithData:data previewImageData:data title:@"分享圖片" description:@"分享123456圖片到QQ"];
    SendMessageToQQReq* req = [SendMessageToQQReq reqWithContent:img];
    
    QQApiSendResultCode sent = [QQApiInterface sendReq:req];
    [self handleSendResult:sent];
}
- (void)sendWebMessageToQQ
{
    NSString *path = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"IconWX"];
    NSData* data = [NSData dataWithContentsOfFile:path];
    NSURL* url = [NSURL URLWithString:@"http://sports.qq.com/a/20120510/000650.htm"];
    
    QQApiNewsObject* img = [QQApiNewsObject objectWithURL:url title:@"天公作美倫敦奧運(yùn)圣火點(diǎn)燃成功 火炬?zhèn)鬟f開(kāi)啟" description:@"騰訊體育訊 當(dāng)?shù)貢r(shí)間5月10日中午,陽(yáng)光和全世界的目光聚焦于希臘最高女祭司手中的火炬上墓贿,5秒鐘內(nèi)世界屏住呼吸茧泪◎寻保火焰驟然升騰的瞬間,古老的號(hào)角聲隨之從赫拉神廟傳出——第30屆倫敦夏季奧運(yùn)會(huì)圣火在古奧林匹亞遺址點(diǎn)燃调炬。取火儀式前语盈,國(guó)際奧委會(huì)主席羅格、希臘奧委會(huì)主席卡普拉洛斯和倫敦奧組委主席塞巴斯蒂安-科互贈(zèng)禮物缰泡,男祭司繼北京奧運(yùn)會(huì)后刀荒,再度出現(xiàn)在采火儀式中。" previewImageData:data];
    //    [img setCflag:kQQAPICtrlFlagQQShare];
    SendMessageToQQReq* req = [SendMessageToQQReq reqWithContent:img];
    
    QQApiSendResultCode sent = [QQApiInterface sendReq:req];
    [self handleSendResult:sent];
    
}

- (void)sendWebMessageToQQZone
{
    //   發(fā)送網(wǎng)絡(luò)圖片
    NSURL *previewURL = [NSURL URLWithString:@"http://img1.gtimg.com/sports/pics/hv1/87/16/1037/67435092.jpg"];
    NSURL* urlq = [NSURL URLWithString:@"http://sports.qq.com/a/20120510/000650.htm"];
    
    QQApiNewsObject* imgq = [QQApiNewsObject objectWithURL:urlq title:@"天公作美倫敦奧運(yùn)圣火點(diǎn)燃成功 火炬?zhèn)鬟f開(kāi)啟" description:@"騰訊體育訊 當(dāng)?shù)貢r(shí)間5月10日中午棘钞,陽(yáng)光和全世界的目光聚焦于希臘最高女祭司手中的火炬上缠借,5秒鐘內(nèi)世界屏住呼吸∫瞬拢火焰驟然升騰的瞬間泼返,古老的號(hào)角聲隨之從赫拉神廟傳出——第30屆倫敦夏季奧運(yùn)會(huì)圣火在古奧林匹亞遺址點(diǎn)燃。取火儀式前姨拥,國(guó)際奧委會(huì)主席羅格绅喉、希臘奧委會(huì)主席卡普拉洛斯和倫敦奧組委主席塞巴斯蒂安-科互贈(zèng)禮物,男祭司繼北京奧運(yùn)會(huì)后叫乌,再度出現(xiàn)在采火儀式中柴罐。" previewImageURL:previewURL];
    [imgq setCflag:kQQAPICtrlFlagQZoneShareOnStart];
    SendMessageToQQReq* reqq = [SendMessageToQQReq reqWithContent:imgq];
    
    QQApiSendResultCode sentq = [QQApiInterface sendReq:reqq];
    [self handleSendResult:sentq];
}
//QQ分享的操作
- (void)handleSendResult:(QQApiSendResultCode)sendResult
{
    switch (sendResult)
    {
        case EQQAPIAPPNOTREGISTED:
        {
            UIAlertView *msgbox = [[UIAlertView alloc] initWithTitle:@"Error" message:@"App未注冊(cè)" delegate:nil cancelButtonTitle:@"取消" otherButtonTitles:nil];
            [msgbox show];
            break;
        }
        case EQQAPIMESSAGECONTENTINVALID:
        case EQQAPIMESSAGECONTENTNULL:
        case EQQAPIMESSAGETYPEINVALID:
        {
            UIAlertView *msgbox = [[UIAlertView alloc] initWithTitle:@"Error" message:@"發(fā)送參數(shù)錯(cuò)誤" delegate:nil cancelButtonTitle:@"取消" otherButtonTitles:nil];
            [msgbox show];
            break;
        }
        case EQQAPIQQNOTINSTALLED:
        {
            UIAlertView *msgbox = [[UIAlertView alloc] initWithTitle:@"Error" message:@"未安裝手Q" delegate:nil cancelButtonTitle:@"取消" otherButtonTitles:nil];
            [msgbox show];
            break;
        }
        case EQQAPIQQNOTSUPPORTAPI:
        {
            UIAlertView *msgbox = [[UIAlertView alloc] initWithTitle:@"Error" message:@"API接口不支持" delegate:nil cancelButtonTitle:@"取消" otherButtonTitles:nil];
            [msgbox show];
            break;
        }
        case EQQAPISENDFAILD:
        {
            UIAlertView *msgbox = [[UIAlertView alloc] initWithTitle:@"Error" message:@"發(fā)送失敗" delegate:nil cancelButtonTitle:@"取消" otherButtonTitles:nil];
            [msgbox show];
            break;
        }
        default:
        {
            break;
        }
    }
}

7、QQ登錄

#import <TencentOpenAPI/TencentOAuth.h>
#import <TencentOpenAPI/TencentMessageObject.h>
#import <TencentOpenAPI/TencentApiInterface.h>
#import <TencentOpenAPI/QQApiInterfaceObject.h>
#import <TencentOpenAPI/QQApiInterface.h>
//遵循TencentSessionDelegate協(xié)議 添加屬性TencentOAuth //*_tencentOAuth;      //初始化
_tencentOAuth = [[TencentOAuth alloc] initWithAppId:@"1105236091" andDelegate:self];     _tencentOAuth.redirectURI = @“www.qq.com";                                     //qq登錄
- (void)onClickQQLoginBtn
{
    NSArray* permissions = [NSArray arrayWithObjects:
                            kOPEN_PERMISSION_GET_USER_INFO,
                            kOPEN_PERMISSION_GET_SIMPLE_USER_INFO,
                            kOPEN_PERMISSION_ADD_ALBUM,
                            kOPEN_PERMISSION_ADD_ONE_BLOG,
                            kOPEN_PERMISSION_ADD_SHARE,
                            kOPEN_PERMISSION_ADD_TOPIC,
                            kOPEN_PERMISSION_CHECK_PAGE_FANS,
                            kOPEN_PERMISSION_GET_INFO,
                            kOPEN_PERMISSION_GET_OTHER_INFO,
                            kOPEN_PERMISSION_LIST_ALBUM,
                            kOPEN_PERMISSION_UPLOAD_PIC,
                            kOPEN_PERMISSION_GET_VIP_INFO,
                            kOPEN_PERMISSION_GET_VIP_RICH_INFO,
                            nil];
    //@[@"get_user_info", @"get_simple_userinfo", @"add_t"]
    //授權(quán)登錄
    [_tencentOAuth authorize:permissions inSafari:NO];
}                                                                                                              登錄成功之后調(diào)用代理方法(協(xié)議必須實(shí)現(xiàn)的三個(gè)方法)                                                 //qq登錄成功之后  在協(xié)議的方法中返回信息
- (void)tencentDidLogin
{
    if ([_tencentOAuth.accessToken length] > 0 && _tencentOAuth.accessToken) {
        NSLog(@"success%@-->%@-->%@-->%@-->%@",_tencentOAuth.openId, _tencentOAuth.accessToken, _tencentOAuth.appId, _tencentOAuth.openId, _tencentOAuth.expirationDate);
        
        [[NSUserDefaults standardUserDefaults] setObject:@{@"accessToken":_tencentOAuth.accessToken, @"expirationDate":_tencentOAuth.expirationDate, @"openId":_tencentOAuth.openId, @"appId":_tencentOAuth.appId} forKey:QQSaveToken];
        [_tencentOAuth getUserInfo]; //調(diào)用此方法會(huì)在- (void)getUserInfoResponse:(APIResponse *)response中返回?cái)?shù)據(jù)
    }
    else {
        NSLog(@"fail%@-->%@-->%@-->%@-->%@",_tencentOAuth.openId, _tencentOAuth.accessToken, _tencentOAuth.appId, _tencentOAuth.openId, _tencentOAuth.expirationDate);
    } 
}
- (void)getUserInfoResponse:(APIResponse *)response
{
//    NSLog(@"--->respons:%@",response.jsonResponse);
    [[NSUserDefaults standardUserDefaults] setObject:@{@"headerImage":response.jsonResponse[@"figureurl_qq_2"], @"nickname":response.jsonResponse[@"nickname"], @"description":[NSString stringWithFormat:@"%@-%@ %@", response.jsonResponse[@"province"], response.jsonResponse[@"city"], response.jsonResponse[@"gender"]]} forKey:QQResponse_UserInfo];
    [self parseQQUserShow];
}
- (void)parseQQUserShow
{
    if ([[NSUserDefaults standardUserDefaults] objectForKey:QQResponse_UserInfo]) {
        
        NSDictionary *dict = [[NSUserDefaults standardUserDefaults] objectForKey:QQResponse_UserInfo];
        NSLog(@"-->QQ個(gè)人信息UserShow%@", dict);
        [_WXheaderImageView sd_setImageWithURL:[NSURL URLWithString:dict[@"headerImage"]] placeholderImage:nil options:SDWebImageProgressiveDownload];
        _WXnameLabel.text = dict[@"nickname"];
        _WXdescriptionLabel.text = dict[@"description"];
    }
}
- (void)tencentDidNotLogin:(BOOL)cancelled
{
    NSLog(@"tencentDidNotLogin");
    if (cancelled)
    {
        NSLog(@"tencentDidNotLogin用戶取消登錄");
    }else{
        NSLog(@"tencentDidNotLogin登錄失敗");
    }
}
- (void)tencentDidNotNetWork
{
    NSLog(@"tencentDidNotNetWork無(wú)網(wǎng)絡(luò)連接憨奸,請(qǐng)?jiān)O(shè)置網(wǎng)絡(luò)");
}

8革屠、iOS開(kāi)發(fā) -鍵加入qq群

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市排宰,隨后出現(xiàn)的幾起案子似芝,更是在濱河造成了極大的恐慌,老刑警劉巖板甘,帶你破解...
    沈念sama閱讀 221,695評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件党瓮,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡盐类,警方通過(guò)查閱死者的電腦和手機(jī)麻诀,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,569評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)傲醉,“玉大人蝇闭,你說(shuō)我怎么就攤上這事∮脖希” “怎么了呻引?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,130評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)吐咳。 經(jīng)常有香客問(wèn)我逻悠,道長(zhǎng)元践,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,648評(píng)論 1 297
  • 正文 為了忘掉前任童谒,我火速辦了婚禮单旁,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘饥伊。我一直安慰自己象浑,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,655評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布琅豆。 她就那樣靜靜地躺著愉豺,像睡著了一般。 火紅的嫁衣襯著肌膚如雪茫因。 梳的紋絲不亂的頭發(fā)上蚪拦,一...
    開(kāi)封第一講書(shū)人閱讀 52,268評(píng)論 1 309
  • 那天,我揣著相機(jī)與錄音冻押,去河邊找鬼驰贷。 笑死,一個(gè)胖子當(dāng)著我的面吹牛洛巢,可吹牛的內(nèi)容都是我干的饱苟。 我是一名探鬼主播,決...
    沈念sama閱讀 40,835評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼狼渊,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了类垦?” 一聲冷哼從身側(cè)響起狈邑,我...
    開(kāi)封第一講書(shū)人閱讀 39,740評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎蚤认,沒(méi)想到半個(gè)月后米苹,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,286評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡砰琢,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,375評(píng)論 3 340
  • 正文 我和宋清朗相戀三年蘸嘶,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片陪汽。...
    茶點(diǎn)故事閱讀 40,505評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡训唱,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出挚冤,到底是詐尸還是另有隱情况增,我是刑警寧澤,帶...
    沈念sama閱讀 36,185評(píng)論 5 350
  • 正文 年R本政府宣布训挡,位于F島的核電站澳骤,受9級(jí)特大地震影響歧强,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜为肮,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,873評(píng)論 3 333
  • 文/蒙蒙 一摊册、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧颊艳,春花似錦茅特、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,357評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至戒悠,卻和暖如春熬荆,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背绸狐。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,466評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工卤恳, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人寒矿。 一個(gè)月前我還...
    沈念sama閱讀 48,921評(píng)論 3 376
  • 正文 我出身青樓突琳,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親符相。 傳聞我的和親對(duì)象是個(gè)殘疾皇子拆融,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,515評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容