最近做项目 对接阿里百川淘宝授权,遇到一些问题 记录下.
首先按照阿里百川的文档
https://baichuan.taobao.com/docs/doc.htm?spm=a3c0d.7629140.0.0.3d89be48b5Xppt&treeId=129&articleId=118399&docType=1
会触发淘宝登录授权
// 最新SDK授权头文件
#import <AlibabaAuthEntrance/ALBBSDK.h>
#import <AlibabaAuthEntrance/ALBBCompatibleSession.h>
#import <AlibcTradeSDK/AlibcTradeSDK.h>
if(![[ALBBCompatibleSession sharedInstance] isLogin]) {
[[ALBBSDK sharedInstance] setH5Only:NO];
[[ALBBSDK sharedInstance] auth:self successCallback:^{
NSString*tip = [NSStringstringWithFormat:@"登录的用户信息:%@",[[ALBBCompatibleSessionsharedInstance] getUser]];
DLog(@"%@", tip);
///已经授权登录成功
[self authTaobaoWeb];
}failureCallback:^(NSError*error) {
NSString *tip=[NSString stringWithFormat:@"登录失败:%@",@""];
DLog(@"%@", tip);
}];
}else{
NSString*tip = [NSStringstringWithFormat:@"登录的用户信息:%@",[[ALBBCompatibleSessionsharedInstance] getUser]];
DLog(@"%@", tip);
ALBBUser *user = [[ALBBCompatibleSession sharedInstance] getUser];
self.abbUser= user;
///已经授权登录成功
// https://oauth.m.taobao.com/authorize?response_type=code&client_id=23075594&redirect_uri=http://www.oauth.net/2/&state=1212
}
百川和联盟的API不是同一个AppKey,通过百川授权联盟私域用户能力阅读以下流程
1)在百川控制台申请“淘宝客基础页面包”套件
2)申请通过后,在确保百川授权成功后,使用百川的openByUrl接口加载私域用户授权URL,具体查看无线端授权规范文档拼接URL(AlibcTrade.openByUrl,请使用最新版本的SDK)
3)回跳url的code,4.0需要从服务端获取,是到媒体自己的服务器,由回跳的媒体服务端自己接收处理。
4)关闭当前页面是需要媒体处理的,可以使用webview JSBridge关闭。
若百川授权成功后,应用授权还需要输入账号密码,请按照上面流程(着重查看1、2),认真检查下~
在登录授权成功后 我们需要按照上面的步骤 拼接URL
NSString *taobaoURL = @"https://oauth.m.taobao.com/authorize?response_type=code&client_id=23075594&redirect_uri=http://www.oauth.net/2/&state=1212";
AlibcTradeShowParams *showParames = [[AlibcTradeShowParams alloc] init];
showParames.openType = AlibcOpenTypeAuto;
showParames.isNeedPush=YES;
ALiTradeWebViewController *webViewController = [[ALiTradeWebViewController alloc] init];
NSInteger res = [[AlibcTradeSDK sharedInstance].tradeService
openByUrl:autoURL
identity:@"trade"
webView:webViewController.webView
parentController:webViewController
showParams:showParames
taoKeParams:nil
trackParam:nil
tradeProcessSuccessCallback:^(AlibcTradeResult * _Nullable result) {
DLog(@"result=%@",result);
}
tradeProcessFailedCallback:^(NSError*_Nullableerror) {
DLog(@"error=%@",error);
}];
if(res ==1) {
[webViewController setNavigationDelegate]; // 重点 这里重新设置代理 才能拦截URL链接跳转 做自己想做的事 否则拦截不到.
webViewController.modalPresentationStyle = UIModalPresentationFullScreen;
[self.navigationController presentViewController:webViewController animated:YES completion:nil];
}
// 这个时候 才能拿到授权code 和后台交互.
OVER.