今天正好需要集成支付寶登錄,(注意哦杀餐,不是使用支付寶支付,只是支付寶登錄朱巨。)也有一段時(shí)間沒寫了史翘,正好整理下思路。把過程記錄下以后直接參考冀续。
支付寶【登錄Only】AFAuthSDK下載入口.
參考官方文檔
1琼讽、開發(fā)者網(wǎng)站申請(qǐng)與配置
和大多數(shù)的三方一樣,需要申請(qǐng)成為開發(fā)者-注冊(cè)app-生成appID等洪唐。
主要是appID和配置你需要用支付寶的哪些功能钻蹬。這里我選擇了
· 獲取會(huì)員信息
· 第三方授權(quán)1
配置好后提交審核即可。這里暫時(shí)用不到支付寶給我們提供的沙盒模式凭需,那個(gè)用于支付功能測(cè)試不錯(cuò)的问欠。
2、回到項(xiàng)目
將下載好的sdk拖入工程中粒蜈。并配置項(xiàng)目的Link Binary如圖:
登錄:“AFAuthSDK.framework”
登錄+支付:“AlipaySDK.framework”
按需集成顺献,這里說明一點(diǎn)。以前由于上架審核的機(jī)制問題薪伏,所以都是AlipaySDK滚澜,但是Apple自從2018年1月左右審核機(jī)制對(duì)于支付功能的規(guī)范后,導(dǎo)致很多app上架失敗嫁怀。針對(duì)這個(gè)問題设捐,微信、支付寶等三方登錄均將授權(quán)登錄部分單獨(dú)提供sdk(auth_login_only)塘淑。
3萝招、別急,到代碼了
· import <AFAuthSDK/AFAuthSDK.h>
//你在info中/或plist中設(shè)置的appScheme
NSString *appScheme = @"你的appScheme";
//authStr參數(shù)后臺(tái)獲却孓唷槐沼!和開發(fā)中心配置的app有關(guān)系曙蒸,包含appid\name等等信息。
NSString *authStr = @"后臺(tái)獲取的authStr";
//沒有安裝支付寶客戶端的跳到網(wǎng)頁授權(quán)時(shí)會(huì)在這個(gè)方法里回調(diào)
[[AFAuthSDK defaultService] authv2WithInfo:authStr fromScheme:appScheme callback:^(NSDictionary *result) {
// 解析 auth code
NSString *resultString = result[@"result"];
NSString *authCode = nil;
if (resultString.length>0) {
NSArray *resultArr = [resultString componentsSeparatedByString:@"&"];
for (NSString *subResult in resultArr) {
if (subResult.length > 10 && [subResult hasPrefix:@"auth_code="]) {
authCode = [subResult substringFromIndex:10];
break;
}
}
}
NSLog(@"resultString = %@",resultString);
// NSLog(@"authv2WithInfo授權(quán)結(jié)果 authCode = %@", authCode?:@"");
}];
4岗钩、不調(diào)用block纽窟?
寫完以上代碼會(huì)發(fā)現(xiàn)并不能回調(diào)。解決:
在你的appdelegate中繼續(xù)寫:
-(BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options{
//授權(quán)返回碼
[[AFAuthSDK defaultService]processAuthv2Result:url standbyCallback:^(NSDictionary *result) {
}];
return YES;
}
以上也是在只用到支付寶登錄兼吓,不需要支付的時(shí)候最簡(jiǎn)潔的做法了把臂港。
不用到支付功能的真的沒必要使用AliPaySDK.framework.
當(dāng)然,你也可以使用友盟视搏、shareSDK等方式集成审孽,借助于后者的不利就是多集成很多無效垃圾代碼。當(dāng)然浑娜,凡事陰陽佑力,后者的便利是在于我們需要集成微信、新浪筋遭、微博打颤、支付寶、QQ宛畦、Twitter瘸洛、Facebook等一大大大大大堆的三方登錄。
Tips: shareSDK對(duì)國(guó)外平臺(tái)的集成比較友好次和,友盟SDK最近一段時(shí)間沒用過不知道反肋。
簡(jiǎn)潔且簡(jiǎn)單.
The End.