授權引數通過請求的方式從伺服器獲取
授權引數列表詳情傳送門
方便伺服器配置修改授權引數,防止簽名私鑰的洩漏
授權成功後有兩個回撥入口
- 手機端安裝了支付寶
[[AlipaySDK defaultService] auth_V2WithInfo: infoStr fromScheme:schemeStr
callback:^(NSDictionary *resultDic) {
NSLog("%@",resultDic)
}];
複製程式碼
infoStr:授權引數 schemeStr:自己APP的scheme,配置方式如下: TARGETS>Info>URLTypes
將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