最近做项目 对接阿里百川淘宝授权,遇到一些问题 记录下.
首先按照阿里百川的文档
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.