新浪微博sso授權第三方登錄,這里沒有借助第三方框架,如shareSKD和友盟等,直接參考新浪官方SDK和文檔。
過程中遇到幾個坑,找了很久,好歹最后解決了,記錄如下
問題1:
_NSInlineData base64EncodedString - unrecognized selector sent to instance 報錯
這個坑編譯是看不出來的,可以通過,運行時,直接閃退了,蹦~
解答:
這里我之前也試過第三方框架做新浪授權登錄,也會遇到此問題,所以這個還是新浪自己SDK的坑,與第三方框架無關。
最后解決:在build settings ->other linker flags ->添加-all_load
吐槽下,官方文檔上,讓家-objc,沒卵用啊。。。
這里要注意下,如果還不行,最好嚴格按照官方文檔把相應framework加全了,具體參考《微博iOS平台SDK文檔V3.1.4》,https://github.com/sinaweibosdk/weibo_ios_sdk。
問題2:
好了,這個坑糾結很久,終於可以運行了,打開都正常,點擊新浪登錄,理論上直接彈出提示:應用想打開微博,下面可以選取取消、確定
但實際上是跳刀了網頁登錄,並沒有sso打開微博APP,並且打印一大堆日志,錯誤如下:
-canOpenURL: failed for URL: "sinaweibo" - error:"This app is not allowed to query for scheme xx
-canOpenURL: failed for URL: "weibosdk" - error:"This app is not allowed to query for scheme xx
總共好幾行,解決辦法是:在info.plist里添加一個屬性:LSApplicationQueriesSchemes,並設置內容
添加完,就可以正常授權了。
授權后回得到uid和accessToken,再自己去新浪調取用戶接口就可以得到用戶信息了,昵稱、城市、頭像什么的。。。
結束。