iOS开发——新浪微博篇之环境搭建以及新版sdk的相关问题

最近打算做一下新浪微博练练手,但是发现最新版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;
    }
}

坑爹的来了: 官方demo中竟然也没有实现保存用户信息这样的功能--。害我等白找了半天都没找到新sdk的解决方法(新浪微博的官方问答区略水啊)。由于新sdk跟旧版本变化较大,个人保存方法为,先创建授权响应类对象,然后将该类对象的各属性以UserDefaults的方式保存,在上述_initWeibo中取出即可。代码如下:


- (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];
    }
}

这里用到了WeiboSDKDelegate 协议方法,当收到微博响应的时候调用该方法。


如果这时候你去授权,会发现授权完后依旧不能回到自己的应用中。这也是sina隐藏的第二个重要的事(其实这个在sdk文件下的pdf中有,但官网和readme中却没找到,所以感觉略不合理),我们还需要对应用做一些设置,如下图所示,设置完以后就行了




接下来就是对照api拿东西、解析、界面设置、放东西了。本人还在慢慢尝试中--。希望上述内容能对各位有帮助。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值