大家都知道,应用在从浏览器跳回到应用时会在appdelegate中调用如下方法:-(BOOL)application:(UIApplication*)applicationopenURL:(NSURL*)urlsourceApplication:(NSString*)sourceApplicationannotation:(id)annotation{NSLog(@"url=%@",url.absoluteString);NSLog(@"sourceApplication=%@",sourceApplication);[[MBGithubOAuthClientsharedClient]tokenRequestWithCallbackURL:urlsaveOptions:kMBSaveOptionsKeychaincompletion:^(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做处理,请各位大牛不吝赐教
2 回答

陪伴而非守候
TA贡献1757条经验 获得超8个赞
简单想了一下,你可以直接在openURL方法中使用[[OAuthSignUtilsharedOAuthSignUtil]receiveResponse]来调用block(恩,首先你得在signInto中持有这个block)如果你不相在openURL方法中暴露你的调用,用methodswizzling把openURL换成你自己的方法,这个还是要谨慎使用。
添加回答
举报
0/150
提交
取消