最近打算做一下新浪微博练练手,但是发现最新版sdk确实蛋疼。感觉越更新越不好用了--。也许是我没入门吧,不过在上网查的时候发现许多问题或者没人解答,或者答案分散。更要命的是,虽然网上有些教学,但都是ios5或6的了,相对于7而言变化还是不少的,所以昨天花了一天的时间算是搭建好环境了,这里把遇到的所有问题总结一下,希望能帮助各位。
首先要注册成为开发者。
登录微博开放平台http://open.weibo.com。登录自己的微博账号(没有的可以创建一个),按照官方的教程一步一步来即可,这一步比较简单。在这里做简单的盗图
点这个可以创建自己的应用
在这里填写响应信息即可
注:个人网站可以写自己的博客地址或者自己的个人主页(如果有),实在都没有就随便写吧--
然后就到了创建自己应用的网站,按要求填写即可,接下来就进入正题了。
设置应用基本信息
在你的应用里选择左边的应用信息。然后先选基本信息。我们需要记住几个常量(这几个常量可以放在单独的.h或这干脆放到.pch中)。一个是App Key,一个是App Secret。目前本人只是做到了搭建完环境这一步,新sdk在初始化WeiboSDK时只需要App Key(参见demo),secret不知道用不用,在这里就不妄下结论了。
接下来比较关键。我们要找出“隐蔽”的信息并加以设置——Bundle id和App id。(吐槽一下,sina为什么把它们隐藏起来了--害我找了好半天)。
注意:如果不设置会产生授权界面跳不回来的情况
上一张图片上可以在基本应用信息的左边看到“编辑”按钮,点击他就能弹出一些需要我们填写的信息。如下图
其他的按要求填写即可,应用简介、应用介绍等随便添添就行。关键时那两个*项。由于我们现在时测试项目,或者说我们的项目还没有上架,所以appid可以随便添(只能添数字)等上架后我们要第一时间来改过来。至于Bundle ID,一定要和你的应用(也就是你的xcode项目)的bundle id一模一样。而且要写全称,不是只要开头的。
设置应用回调页面
接下来我们打开左边的高级信息,注意到有一个QAuth2.0授权设置
默认状态下这两个都是http://。我们要自己设置回调页。作为移动端应用,这两个随便填写就行了,官方建议使用上图中的默认回调页。
还没有完,在应用中在授权的时候也会用到这个回调页网址。注意:务必保证一致性。也就是说你在你的应用网站上设置的回调页是什么,在你的项目中就必须一模一样。否则在授权时会出现类似“授权失败,请联系<#你自己#>”这样的错误信息。
这样项目外环境搭建基本完成了,剩下的就是代码工作了。代码因人而异,这里提供个人实现仅作参考。
在appDelegate中
[WeiboSDK enableDebugMode:YES]; [WeiboSDK registerApp:kAppKey]; [self _initWeibo];
- (void)_initWeibo { WBAuthorizeResponse *response = [WBAuthorizeResponse response]; NSDictionary *authorizeInfo = [[NSUserDefaults standardUserDefaults] objectForKey:@"SinaWeiboAuthData"]; if ([authorizeInfo objectForKey:@"AccessTokenKey"] && [authorizeInfo objectForKey:@"UserIDKey"] && [authorizeInfo objectForKey:@"ExpirationDateKey"] && [authorizeInfo objectForKey:@"UserInfoKey"]) { response.accessToken = [authorizeInfo objectForKey:@"AccessTokenKey"]; response.userInfo = [authorizeInfo objectForKey:@"UserInfoKey"]; response.userID = [authorizeInfo objectForKey:@"UserIDKey"]; response.expirationDate = [authorizeInfo objectForKey:@"ExpriationDateKey"]; self.wbToken = response.accessToken; } }
- (void)didReceiveWeiboResponse:(WBBaseResponse *)response { if ([response isKindOfClass:[WBAuthorizeResponse class]]) { // NSString *title = @"认证结果"; // NSString *message = [NSString stringWithFormat:@"响应状态: %d\nresponse.userId: %@\nresponse.accessToken: %@\n响应UserInfo数据: %@\n原请求UserInfo数据: %@",(int)response.statusCode,[(WBAuthorizeResponse *)response userID], [(WBAuthorizeResponse *)response accessToken], response.userInfo, response.requestUserInfo]; // UIAlertView *alert = [[UIAlertView alloc] initWithTitle:title // message:message // delegate:nil // cancelButtonTitle:@"确定" // otherButtonTitles:nil]; // [alert show]; WBAuthorizeResponse *authorizeResponse = (WBAuthorizeResponse *)response; self.wbToken = [authorizeResponse accessToken]; NSDictionary *authorize = [NSDictionary dictionaryWithObjectsAndKeys: authorizeResponse.accessToken, @"AccessTokenKey", authorizeResponse.userID, @"UserIDKey", authorizeResponse.expirationDate, @"ExpirationDateKey", authorizeResponse.userInfo, @"UserInfoKey", nil]; [[NSUserDefaults standardUserDefaults] setObject:authorize forKey:@"SinaWeiboAuthData"]; [[NSUserDefaults standardUserDefaults] synchronize]; } }
如果这时候你去授权,会发现授权完后依旧不能回到自己的应用中。这也是sina隐藏的第二个重要的事(其实这个在sdk文件下的pdf中有,但官网和readme中却没找到,所以感觉略不合理),我们还需要对应用做一些设置,如下图所示,设置完以后就行了
接下来就是对照api拿东西、解析、界面设置、放东西了。本人还在慢慢尝试中--。希望上述内容能对各位有帮助。