經(jīng)常接觸海外用戶的開發(fā)者,對Twitter平臺絕不會感到陌生,作為出海應(yīng)用和游戲App必選的社交分享平臺,MobTech開發(fā)者服務(wù)早在ShareSDK(社會化登錄分享組件)1.0版本就已集成了它。
近期,MobTech開發(fā)者服務(wù)平臺收到部分用戶反饋,反映Twitter分享前的授權(quán)動作索取了過多權(quán)限,需要ShareSDK進(jìn)行優(yōu)化。到底是哪里出了問題?
讓我們先從ShareSDK的分享流程說起。
ShareSDK分享流程
不同社交平臺的分享API并不相同,但多數(shù)需要在分享前完成授權(quán)。ShareSDK同時提供了分享(share)和授權(quán)(authorize)兩個API,只是為了使用方便,分享API背后默認(rèn)進(jìn)行了授權(quán)檢查,所以開發(fā)者日??珊雎允跈?quán)的API(如下圖):
而Twitter的問題在于默認(rèn)情況下,它的授權(quán)動作索取了太多權(quán)限:
所以解決這個問題的第一個辦法,就是不要讓ShareSDK默認(rèn)完成授權(quán),而是在分享前調(diào)用authorize的另一重載,實現(xiàn)對權(quán)限裂變的控制。
嘗試1、通過重載的授權(quán)方法減少索權(quán)
具體的操作如下圖:
執(zhí)行分享前先通過isAuth方法判斷終端用戶是否已經(jīng)授權(quán)了分享,如未授權(quán),則自行調(diào)用authorize的另一種重載方法authorize(String[])來直接指定需要的權(quán)限列表進(jìn)行授權(quán),并在授權(quán)成功后調(diào)用share方法繼續(xù)分享。
因此現(xiàn)在只要查一下Twitter開放平臺的文檔,找到所需的權(quán)限就能解決問題——結(jié)果很遺憾!Twitter并沒有權(quán)限列表的概念,所以這個方案不可行。
嘗試2、修改Twitter App控制臺配置
既然通過代碼配置不可行,根據(jù)我們過往的經(jīng)驗,只能在Twitter的App控制臺內(nèi)進(jìn)行配置。
果不其然,在一個不起眼的角落里,發(fā)現(xiàn)了Twitter的權(quán)限分級選項,但只有3個:只讀、寫入和讀寫(如下圖):
一般情況下,“只讀”選項肯定申請了最少的權(quán)限,切換之后,授權(quán)頁面的權(quán)限列表少了很多,但完成授權(quán)后卻直接影響了分享功能,Twitter提示權(quán)限不夠!
這樣看來,分享動作至少要“寫入”權(quán)限。在嘗試設(shè)置后,盡管可以執(zhí)行分享工作,但授權(quán)頁的權(quán)限列表又增多了。
嘗試3、基于操作系統(tǒng)的API進(jìn)行分享
既然開放平臺的API不能解決這個問題,那只能尋求操作系統(tǒng)API的幫助了,這里的實現(xiàn)原理也很簡單(如下圖):
對于安卓系統(tǒng)而言,這個方案操作很簡單。先前ShareSDK已給部分平臺提供了這個功能,而在iOS平臺實現(xiàn),開發(fā)者需要注意不同App提供的API會有差異,甚至還會受到iOS系統(tǒng)和App版本的影響。
最終解決方案
完成了嘗試三的修改,Twitter索權(quán)過多的問題確實就被解決。并且和之前一樣,可以通過增加一項配置、無需修改分享的調(diào)用代碼,就可直接切換至新的分享方式,特別適用于只需要分享而無需登錄的場景應(yīng)用。
除了Twitter,我們還將這種方案推廣到所有同樣模式的社交平臺中,建議出海開發(fā)者更新至最新版本,適用此方案進(jìn)行分享,解決用戶在分享中產(chǎn)生授權(quán)過多的問題。
關(guān)于ShareSDK
很多移動開發(fā)者都有了解,分享涉及的平臺眾多,需要挨個接入可不是件容易活兒。更別說各平臺的配置、更新以及兼容適配性等問題,沒一件省事。項目組的研發(fā)、推廣、運營、品牌打造等工作,已足夠焦頭爛額,社交平臺的接入是否有更簡便的方法?
有!用ShareSDK!
ShareSDK僅需一鍵集成,輕松解決了以上開發(fā)困擾,同時還省去了后續(xù)一系列維護(hù)平臺的步驟,省時省心又省事。
在信息安全越來越被關(guān)注的時代,ShareSDK對每個平臺的安全性非常重視且嚴(yán)謹(jǐn)對待,是業(yè)內(nèi)知名且安全系數(shù)高的一款社交化分享組件。當(dāng)前ShareSDK已融入了原生和系統(tǒng)分享,完善的分享方式,讓開發(fā)者使用更便捷!
所以,這樣一款分享SDK,接入僅需5分鐘,不香么?