iOSQQ登錄與分享(遇到的問題及解決心得)

由于公司需要件相、要求此次三方登錄全部用官方SDK再扭,需要配置友盟和ShareSDK的同學(xué),這篇文章幫不上太多忙夜矗,看一下就好泛范。

集成和配置步驟 大致過一遍就不多說了,相信大家都耳熟能詳紊撕。

1罢荡、下載并解壓SDK?:下載鏈接

2、拖拽 TencentOpenAPI ?文件到Xcode?工程內(nèi)(請(qǐng)勾選 Copy items if needed);或拷貝SDK?文件到?工程的物理理?目錄下对扶,選中?工程Target -> General -> Linked Frameworks and Libraries -> Add Other 然后找到對(duì)應(yīng)?文件添加即可区赵。

3、添加依賴庫(kù)

SystemConfiguration.framework

4浪南、新增?一條URL scheme:選中?工程Target -> Info -> URLTypes;新的scheme命名為:tencent+appid(ex: tencent123456)

5惧笛、添加?白名單:LSApplicationQueriesSchemes新增?名單(這里遇到了一個(gè)坑,如果此前項(xiàng)目已經(jīng)統(tǒng)一配置過白名單逞泄,千萬不要太自信,一定要根據(jù)官方Demo重新添加一下拜效,我就是因?yàn)樯倥渲昧藘蓚€(gè)白名單喷众,一直不走回調(diào)方法,后來一個(gè)一個(gè)對(duì)比才發(fā)現(xiàn)的)紧憾。

6到千、AppDelegate中添加處理回調(diào)的代碼

//iOS9.0以前使用

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {

  [TencentOAuth HandleOpenURL:url];

    [QQApiInterface handleOpenURL:url delegate:(id<QQApiInterfaceDelegate>)self];

return YES;

}

// 9.0以后使用新API接口

- (BOOL)application:(UIApplication*)app openURL:(NSURL*)url options:(NSDictionary *)options{

    [TencentOAuth HandleOpenURL:url];

    [QQApiInterface handleOpenURL:url delegate:(id<QQApiInterfaceDelegate>)self];

    return YES;

}

以上集成配置 QQ登錄和QQ分享是一樣的,做一遍操作即可赴穗。

1憔四、QQ登錄(登錄類里面的代碼)

//點(diǎn)擊登錄按鈕執(zhí)行的方法

- (void)QQLogin{

    //QQ或者TIM已安裝
    if ([QQApiInterface isQQInstalled] && [QQApiInterface isQQSupportApi]) {

        NSArray* permissions = [self getPermissions];//授權(quán)列表數(shù)組 根據(jù)實(shí)際需要添加

        _tencentOAuth = [[TencentOAuth alloc]initWithAppId:QQAppid andDelegate:self];

        _tencentOAuth.redirectURI = @"";

        _tencentOAuth.authShareType = AuthShareType_QQ;

        [_tencentOAuth authorize:permissions inSafari:NO];

    }

}

//授權(quán)列表數(shù)組 根據(jù)實(shí)際需要添加

- (NSMutableArray*)getPermissions{

    NSMutableArray * g_permissions = [[NSMutableArray alloc] initWithObjects:kOPEN_PERMISSION_GET_SIMPLE_USER_INFO,nil];

    returng_permissions;

}

注意:這里的TencentOAuth對(duì)象要寫成成員變量或者屬性,不然可能會(huì)被提前釋放般眉,獲取不到用戶信息了赵。

這里官方demo用的

[[[sdkCall getinstance] oauth] authorize:permissions inSafari:NO];這個(gè)方法授權(quán),個(gè)人不太建議使用(之前為了獲取UnionId使用過甸赃,無法走回調(diào)方法柿汛,沒解決掉,放棄了)埠对。

以上已經(jīng)請(qǐng)求授權(quán)完成

以下是回調(diào)方法

**#pragma mark -- TencentSessionDelegate==================QQ登錄回調(diào)代理==============** 

-(void)tencentDidLogin{

    NSLog(@"yes");

    NSLog(@"%@ -- %@",_tencentOAuth.accessToken, _tencentOAuth.openId);

    //請(qǐng)求UnionId(什么時(shí)候需要獲取**UnionId络断,詳見[UnionId介紹](http://wiki.connect.qq.com/unionid%E4%BB%8B%E7%BB%8D)**,這個(gè)方法可以直接獲取到**UnionId项玛,**之前自己沒有找到這個(gè)方法貌笨,也耽誤了不少時(shí)間)

  **  [_tencentOAuth RequestUnionId];**

}

-(void)tencentDidNotLogin:(BOOL)cancelled{

    if(cancelled) {

        NSLog(@"取消登錄");

    }

}

-(void)tencentDidNotNetWork{

    NSLog(@"tencentDidNotNetWork");

}

#pragma mark -- 獲取用戶個(gè)人信息

-(void)didGetUnionID{

 NSLog(@"UnionId==================%@",_tencentOAuth.unionid);

    [BMWUserDefaults setObject:_tencentOAuth.unionid forKey:QQAppUnionid];

//因?yàn)槲沂窃趃etUserInfoResponse方法里調(diào)用的后臺(tái)接口,為了保證調(diào)用接口之前已經(jīng)獲取到**Unionid**襟沮,在這里調(diào)用獲取用戶信息的方法锥惋。

    [_tencentOAuth getUserInfo];

}

-(void)getUserInfoResponse:(APIResponse*)response

{

    NSLog(@"response -- %@", response.jsonResponse);

    NSDictionary*dic = response.jsonResponse;

    NSString*sex;

    if([dic[@"gender"]isEqualToString:@"男"]) {

        sex =@"1";

    }else{

        sex =@"2";

    }

    NSDictionary *LoginDataDic = @{@"openid":_tencentOAuth.openId,@"unionid":[BMWUserDefaults objectForKey:QQAppUnionid],@"nickname":dic[@"nickname"],@"headimgurl":dic[@"figureurl_2"],@"sex":sex};

//后臺(tái)QQ登錄授權(quán)接口

    [self getQQLoginData:LoginDataDic];

}

以上是QQ登錄相關(guān)

以下是QQ分享

//分享按鈕點(diǎn)擊事件

**- (void)QQShare{** 

**//一定要加上這行代碼 雖然官方文檔并未說明 不然很可能調(diào)不起分享界面**

**   TencentOAuth *auth = [[TencentOAuth alloc] initWithAppId:QQAppid andDelegate:self];**

    NSString*utf8String =shareUrlStr;

    NSString*title =shareTitleStr;

    NSString*description =shareDetailStr;

    NSString*previewImageUrl =shareImageStr;

    QQApiNewsObject *newsObj = [QQApiNewsObject

                            objectWithURL:[NSURLURLWithString:utf8String]

                            title:title

                            description:description

                            previewImageURL:[NSURLURLWithString:previewImageUrl]];

    newsObj.shareDestType = ShareDestTypeQQ;

req = [SendMessageToQQReq reqWithContent:newsObj];

//將內(nèi)容分享到qq

QQApiSendResultCode sent = [QQApiInterface sendReq:req];

//將內(nèi)容分享到qzone

//QQApiSendResultCode sent = [QQApiInterface SendReqToQZone:req];

}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末昌腰,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子净刮,更是在濱河造成了極大的恐慌剥哑,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,372評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件淹父,死亡現(xiàn)場(chǎng)離奇詭異株婴,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)暑认,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門困介,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人蘸际,你說我怎么就攤上這事座哩。” “怎么了粮彤?”我有些...
    開封第一講書人閱讀 162,415評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵根穷,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我导坟,道長(zhǎng)屿良,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,157評(píng)論 1 292
  • 正文 為了忘掉前任惫周,我火速辦了婚禮尘惧,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘递递。我一直安慰自己喷橙,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評(píng)論 6 388
  • 文/花漫 我一把揭開白布登舞。 她就那樣靜靜地躺著贰逾,像睡著了一般。 火紅的嫁衣襯著肌膚如雪菠秒。 梳的紋絲不亂的頭發(fā)上似踱,一...
    開封第一講書人閱讀 51,125評(píng)論 1 297
  • 那天,我揣著相機(jī)與錄音稽煤,去河邊找鬼核芽。 笑死,一個(gè)胖子當(dāng)著我的面吹牛酵熙,可吹牛的內(nèi)容都是我干的轧简。 我是一名探鬼主播,決...
    沈念sama閱讀 40,028評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼匾二,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼哮独!你這毒婦竟也來了拳芙?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,887評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤皮璧,失蹤者是張志新(化名)和其女友劉穎舟扎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體悴务,經(jīng)...
    沈念sama閱讀 45,310評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡睹限,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評(píng)論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了讯檐。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片羡疗。...
    茶點(diǎn)故事閱讀 39,690評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖别洪,靈堂內(nèi)的尸體忽然破棺而出叨恨,到底是詐尸還是另有隱情,我是刑警寧澤挖垛,帶...
    沈念sama閱讀 35,411評(píng)論 5 343
  • 正文 年R本政府宣布痒钝,位于F島的核電站,受9級(jí)特大地震影響痢毒,放射性物質(zhì)發(fā)生泄漏送矩。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評(píng)論 3 325
  • 文/蒙蒙 一闸准、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧梢灭,春花似錦夷家、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至钥顽,卻和暖如春义屏,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背蜂大。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評(píng)論 1 268
  • 我被黑心中介騙來泰國(guó)打工闽铐, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人奶浦。 一個(gè)月前我還...
    沈念sama閱讀 47,693評(píng)論 2 368
  • 正文 我出身青樓兄墅,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親澳叉。 傳聞我的和親對(duì)象是個(gè)殘疾皇子隙咸,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評(píng)論 2 353

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

  • 由于公司需要沐悦、要求此次三方登錄全部用官方SDK,需要配置友盟和ShareSDK的同學(xué)五督,這篇文章幫不上太多忙...
    馬威明閱讀 5,611評(píng)論 9 4
  • 前言 友盟能實(shí)現(xiàn)分享功能,友盟+申請(qǐng)第三方賬號(hào)的目的: 進(jìn)行分享、授權(quán)操作需要在第三方平臺(tái)創(chuàng)建應(yīng)用并提交審核误证,友盟...
    CoderZb閱讀 9,710評(píng)論 8 60
  • 因?yàn)楣镜捻?xiàng)目里集成了一鍵分享的這個(gè)模塊, 而在我設(shè)計(jì)的時(shí)候發(fā)現(xiàn)國(guó)內(nèi)的官方文檔和提供的 Sample 有混亂和容易...
    valentizx閱讀 2,830評(píng)論 5 1
  • 十月的北京继薛,天黑的異常早。夜幕席卷了整座城后愈捅,人們開始拖著長(zhǎng)長(zhǎng)的燈影重復(fù)著那條期盼已久的路線遏考,又或許,有...
    田心綺閱讀 156評(píng)論 1 0
  • 人生而孤獨(dú)蓝谨。 赤裸裸的來灌具,經(jīng)歷幾十上百年依舊什么也帶不走,最多比來時(shí)多了一身體面的衣服譬巫。 孤獨(dú)也是...
    木白王閱讀 4,544評(píng)論 0 6