最近的公司项目需要集成淘宝授权,所以跟阿里百川打了一段时间的交道。里面的教程写的比较笼统,能完成一些基本的集成功能。具体还要看公司的需求。
下面开始说下我的集成之路吧。
首先打开网址https://baichuan.taobao.com/docs/doc.htm?spm=a3c0d.7629140.0.0.2650be485zZKWM&treeId=129&articleId=105648&docType=1看下基本的流程,例如申请应用获取appkey、配置URL Types、生成安全图片、导入一下必要的framework等都能在上面找到答案。
上述步骤都顺利进行完之后并且程序没有报错,就可以在需要授权的页面里面写授权代码了。当然中间也是走了不少弯路的,例如用webview加载授权地址一直让输入账号和密码等。废话不多说。
以下是我们项目里的授权代码:
if([senderisOn]){
//淘宝授权
ALBBSDK*albbSDK = [ALBBSDK sharedInstance];
[albbSDK logout];//先退出上一个登陆的账号
[albbSDK setAppkey:@"你的appkey"];
[albbSDKsetAuthOption:NormalAuth];
[albbSDKauth:selfsuccessCallback:^(ALBBSession*session){
ALBBUser*user = [sessiongetUser];
NSLog(@"session == %@, user.nick == %@,user.avatarUrl == %@,user.openId == %@,user.openSid == %@,user.topAccessToken == %@",session,user.nick,user.avatarUrl,user.openId,user.openSid,user.topAccessToken);
[selfshowLoading];
[[LGNetworkManagersharedManager]PostWithUrlString:[NSStringstringWithFormat:@"%@%@",API_HOST,OAUTH_VERIFY]parameters:@{@"tb_user_nick":user.nick}completion:^(idresponse,NSError*error) {
[selfhidLoading];
NSString*code = [NSStringstringWithFormat:@"%@", response[@"code"]];
if([codeisEqualToString:@"200"]) {
LGTaobaoAuthViewController *web = [[LGTaobaoAuthViewController alloc] init];
web.url=self.authUrl;
web.title=@"淘宝授权";
[self.navigationControllerpushViewController:webanimated:YES];
}else{
LGTaoBaoAuthFailView*failView = [[LGTaoBaoAuthFailViewalloc]initWithFrame:CGRectMake(0,0,SCREEN_WIDTH,SCREEN_HEIGHT)];
[[UIApplicationsharedApplication].keyWindowaddSubview:failView];
}
}];
}failureCallback:^(ALBBSession*session,NSError*error){
NSLog(@"session == %@,error == %@",session,error);
}];
}else{
[self.tbSwitchsetOn:NO];
ALBBSDK*albbSDK = [ALBBSDKsharedInstance];
[albbSDKlogout];
REMOVE_OBJECT(@"transition");
REMOVE_OBJECT(@"taobaoAuth");
}
有几个地方需要解释一下:
1、首先授权之前为什么先退出 [albbSDK logout]。这是因为授权之前需要清一下上次授权的信息。不然换一个淘宝号授权的话返回的还是上一个淘宝号的信息。
2、为什么还要请求个接口。因为后台要判断这个淘宝号是否绑定过平台其他账号,每个淘宝号只能绑定一个平台账号。
3、self.authUrl是后台返回的一个h5的授权地址(https://oauth.taobao.com/authorize?response_type=code&client_id=25963028&redirect_uri=http%3A%2F%2Ftyg1.haoshichengduo.com%2Ftaobao%2Fcallback&view=wap)。用webview把他加载出来即可。
4、还有一个就是LGTaobaoAuthViewController里面必须用uiwebview加载。如果用wkwebview加载会让你输入账号和密码(百度一下uiwebview和wkwebview的区别)。
出现这个授权页面,点击授权。到这授权就算成功了。