OAuth认证 应用回调函数位置更改

大家都知道,应用在从浏览器跳回到应用时会在appdelegate中调用如下方法:
-(BOOL)application:(UIApplication*)applicationopenURL:(NSURL*)urlsourceApplication:(NSString*)sourceApplicationannotation:(id)annotation
{
NSLog(@"url=%@",url.absoluteString);
NSLog(@"sourceApplication=%@",sourceApplication);
[[MBGithubOAuthClientsharedClient]tokenRequestWithCallbackURL:url
saveOptions:kMBSaveOptionsKeychain
completion:^(BOOLsuccess,NSError*error){
if(error||!success){
NSLog(@"Tokenrequestfailed:%@",error.localizedDescription);
}else{
//Savedtouserdefaults...
NSLog(@"Savedtoken");
}
}];
returnYES;
}
在这里我对返回的url参数可以做处理,可是业务代码不可能写在这里,我应该如何做,使得的可以将回调方法定义在任何位置,类似友盟在controller类中的如下方法:
-(void)didFinishGetUMSocialDataInViewController:(UMSocialResponseEntity*)response
{
//根据`responseCode`得到发送结果,如果分享成功
if(response.responseCode==UMSResponseCodeSuccess)
{
//得到分享到的微博平台名
NSLog(@"sharetosnsnameis%@",[[response.dataallKeys]objectAtIndex:0]);
}
if(response.viewControllerType==UMSViewControllerOauth){
NSLog(@"didFinishOauthAndGetAccountresponseis%@",response);
}
}
当然我希望如果可以,实现如下的回调方式:
[[OAuthSignUtilsharedOAuthSignUtil]signInto:SignIntoGithubcompletion:^(BOOLsuccess,NSError*error){
//做回调处理
}];
即我使用signInto:SignIntoGithub方法去获取授权,然后回调成功之时,之后在下面的block做处理,请各位大牛不吝赐教
扬帆大鱼
浏览 389回答 2
2回答

陪伴而非守候

简单想了一下,你可以直接在openURL方法中使用[[OAuthSignUtilsharedOAuthSignUtil]receiveResponse]来调用block(恩,首先你得在signInto中持有这个block)如果你不相在openURL方法中暴露你的调用,用methodswizzling把openURL换成你自己的方法,这个还是要谨慎使用。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript