iOS支付寶授權登入整合注意事項

莊稼漢寫程式碼發表於2018-01-18

授權引數通過請求的方式從伺服器獲取

授權引數列表詳情傳送門

方便伺服器配置修改授權引數,防止簽名私鑰的洩漏

授權成功後有兩個回撥入口

  • 手機端安裝了支付寶
 [[AlipaySDK defaultService] auth_V2WithInfo: infoStr fromScheme:schemeStr 
  callback:^(NSDictionary *resultDic) {     
         NSLog("%@",resultDic)       
  }];
複製程式碼

infoStr:授權引數 schemeStr:自己APP的scheme,配置方式如下: TARGETS>Info>URLTypes

螢幕快照 2017-11-20 11.32.23.png
將sinaweibo隨意定義字串作為自己的scheme(不過需要避免與常用的一些APP scheme一樣)

客戶端通過這個API將支付寶客戶端調起開始授權操作,當授權成功後,支付寶可以通過你傳入schemeStr回撥到你的APP,AppDelegate會接受授權結果,並且回撥方法

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

        [[AlipaySDK defaultService] processAuth_V2Result:url standbyCallback:^(NSDictionary *resultDic) {
            //code:拿到授權資訊,完成業務邏輯
        }];
        return YES;
}
複製程式碼

這個代理方法可以接受支付、授權、分享等一系列回撥,所以在實際的開發中我們需要通過解析openURL來區分。

  • 手機端未安裝支付寶
 [[AlipaySDK defaultService] auth_V2WithInfo: infoStr fromScheme:schemeStr 
  callback:^(NSDictionary *resultDic) {     
         NSLog("%@",resultDic) 
         //沒有裝支付寶客戶端,直接接受授權後的結果
         //code:完成業務邏輯
  }];
複製程式碼

沒有裝支付寶,直接在自己APP內,通過WebView的方式,登入授權。

支付寶已經被開啟,在授權之前把自己APP殺掉處理

使用者出現這種操作,如果支付寶授權成功,同樣可以把自己的APP調起,並且執行AppDelegate的-(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation代理。所以我們在這種情況下需要做一些保護措施,防止出現業務邏輯錯誤或者crash

相關文章