分享到新浪微博(二)

    这篇博客说明一些使用“JimLiu-WeiboSDK”的一些关键代码段,关于“JimLiu-WeiboSDK”的使用请参考:http://blog.csdn.net/workhardupc100/article/details/6802424

    1. 创建并初始化OAuthEngine

            - (void)viewDidAppear:(BOOL)animated {

                      [super viewDidAppear:animated];

                     /// 初始化engine

                     if (!_engine) {

                          _engine = [[OAuthEngine alloc] initOAuthWithDelegate: self];

                          _engine.consumerKey = kOAuthConsumerKey;

                           _engine.consumerSecret = kOAuthConsumerSecret;

                           _engine.username = 如果之前认证过且保存过信息,则取出认证的用户名(其实是用户id

                  }

           }

2.  进行认证

          - (void)Auth {

                UIViewController *controller = [OAuthController controllerToEnterCredentialsWithEngine: _engine delegate: self];

               if (controller {

                     /** 此时表示没有认证过,则会弹出认证的WebView界面 */

                     [self presentModalViewController: controller animated: YES];

            }

           else {

                 /** 此时表示已认证过 */

                 [OAuthEngine setCurrentOAuthEngine:_engine];

           }    

3. 实现OAuthEngineDelegate中的方法,用户保存和获取认证过的数据

          /// 保存获取的认证的数据

          - (void) storeCachedOAuthData: (NSString *) data forUsername: (NSString *) username {

                 if (username == nil) {

                        return;

                 }

                NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

                [defaults setObject: data forKey:username];

                [defaults synchronize];

          }

         /// 获取保存的认证的数据

         - (NSString *) cachedOAuthDataForUsername: (NSString *) username {

               if (username == nil) {

                   return @"";

              }

              return [[NSUserDefaults standardUserDefaults] objectForKey: username];

         }

         /// 认证失败时的回调函数

         - (void) oAuthConnectionFailedWithData: (NSData *) data {

                     // 认证失败的处理

         }

4.  认证后,发表一个微博

     - (void)postNewStatus {

              if (![_engine isAuthorized]) /// 判断下是否认证过,因为isAuthorized做了一些特殊处理,有必要调用

                    return;

             [OAuthEngine setCurrentOAuthEngine:_engine]; /// 设置OAuthEngine

             WeiboClient *client = [[WeiboClient alloc] initWithTarget:self 

                      engine:[OAuthEngine currentOAuthEngine]   action:@selector(postStatusDidSucceed:obj:)];

             [client post:@"Hello World"];

    }

    /// isAuthorized的实现细节

    - (BOOL) isAuthorized {

              if (_accessToken.key && _accessToken.secret) return YES;

              NSString *accessTokenString = [_delegate respondsToSelector: @selector(cachedOAuthDataForUsername:)] ? [(id) _delegate                                              cachedOAuthDataForUsername: self.username] : @"";

              if (accessTokenString.length) {

                    [_accessToken release];

                   _accessToken = [[OAToken alloc] initWithHTTPResponseBody: accessTokenString];

                   self.username = [self extractUsernameFromHTTPBody: accessTokenString];

                    if (_accessToken.key && _accessToken.secret

                    return YES;

             } 

            [_accessToken release]; // no access token found.  create a new empty one

            _accessToken = [[OAToken alloc] initWithKey: nil secret: nil];

            return NO;

        }



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值