开放平台

来源:互联网 发布:自动注册会员软件 编辑:程序博客网 时间:2024/04/27 22:49

    一,开放平台介绍:

  开放平台:第三方应用通过开放平台将自己的产品,资讯分享到微博等应用上,有助于推广产品,增加网站,应用的流量,拓展新用户,获得收益。

  新浪微博移动应用平台为第三方提供了简单的合作模式,满足了多种移动终端用户随时随地分享信息的需求。移动开放平台提供微博接口及组件,以实现第三方移动站点,客户端,机顶盒,车载设备的接入。

  提供移动客服端开源SDK下载,方便开发者集成微博功能,降低开发成本

  二,OAuth认证:

 开放平台将接口开放,须通过授权认证来保证安全

OAuth通常包括三种角色,消费方,服务提供方,用户。消费方使用认证,需从提供方申请两样东西。 Consumer Key  Consumer Secret。

  三,新浪微博SDK

      SDK下载地址 http://open.weibo.com/wiki/SDK

       API接口文档下载地址 http://open.weibo.com/wiki/API

  微博 SDK 为开发者提供访问微博 api 的集成接口,将身份验证以及 api 调用集成起来。并集成 sso 登录功能,使第三方应用可通过新浪微博官方客户端快速通过Oauth2.0 授权,并完成用户登录操作。

  本文档将对使用 IOS SDK时所用的一些参数、接口进行说明,并分析一个简单示例,帮助第三方更方便的使用 SDK(一些不使用的接口只做简单说明)。 

名词解释

page3image3560

AppKey

分配给每个第三方应用的 app key。用于鉴权身份,显示来源等功能。

page3image6392

APPSecret

page3image7640

生成请求 request Token 的 secret,与 app key 一起分配。

AccessToken

表示用户身份的 token,用于微博 API 的调用。

ExpirationDate

page3image12968
过期时间,用于判断登录是否过期。

RedirectURI

应用回调页面,可在新浪微博开放平台->我的应用->应用信息->高级应用->授权设置->应用回调页中找到。

page3image16776page3image17528

ssoCallbackScheme

sso 回调地址,info.plist 中定义的 URL types,用于在微博客户端完成 sso登录后进行回调。


  AppKey  AppAecret,注册成为开发者时会获取。


 四,简单实现下第三方应用通过新浪微博开发平台授权访问自己的微博

  将SDK导入程序中,在AppDelegate.m完成验证

    _sinaweibo = [[SinaWeibo alloc] initWithAppKey:kAppKey                                         appSecret:kAppSecret                                    appRedirectURI:kAppRedirectURI                                       andDelegate:self];    //取得本地保存的验证信息    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];    NSDictionary *sinaweiboInfo = [defaults objectForKey:@"SinaWeiboAuthData"];    if ([sinaweiboInfo objectForKey:@"AccessTokenKey"]&&        [sinaweiboInfo objectForKey:@"ExpirationDateKey"]&&        [sinaweiboInfo objectForKey:@"UserIDKey"]) {                _sinaweibo.accessToken = [sinaweiboInfo objectForKey:@"AccessTokenKey"];        _sinaweibo.expirationDate = [sinaweiboInfo objectForKey:@"ExpirationDateKey"];        _sinaweibo.userID = [sinaweiboInfo objectForKey:@"UserIDKey"];


#pragma mark - SinaWeibo delegate// 授权成功调用协议方法- (void)sinaweiboDidLogIn:(SinaWeibo *)sinaweibo {        //保存认证的信息    NSDictionary *authData = [NSDictionary                              dictionaryWithObjectsAndKeys:                              sinaweibo.accessToken,                              @"AccessTokenKey",                              sinaweibo.expirationDate,                              @"ExpirationDataKey",                              sinaweibo.userID,                              @"UserIDKey",                              sinaweibo.refreshToken,                              @"refresh_token", nil];    [[NSUserDefaults standardUserDefaults] setObject:authData forKey:@"SinaWeiboAuthData"];    [[NSUserDefaults standardUserDefaults] synchronize];    }//注销调用- (void)sinaweiboDidLogOut:(SinaWeibo *)sinaweibo {        //移除本地保存的认证消息    [[NSUserDefaults standardUserDefaults] removeObjectForKey:@"SinaWeiboAuthData"];        [[NSUserDefaults standardUserDefaults] synchronize];}//认证失败调用协议方法- (void) sinaweibo:(SinaWeibo *) sinaweibo logInDidFailWithError:(NSError *)error {        NSLog(@"认证失败 %@",error);}

  导入实现下效果


@interface HomeViewController () <SinaWeiboRequestDelegate>@end@implementation HomeViewController- (void)viewDidLoad {    [super viewDidLoad];        SinaWeibo *sinaweibo = [self sinaweibo];    //判断是否授权    if (!sinaweibo.isAuthValid) {                [sinaweibo logIn];        }  else {        //授权的话就请求数据        [sinaweibo requestWithURL:@"statuses/home_timeline.json"                           params:nil                       httpMethod:@"GET"                         delegate:self];    }        - (IBAction)_logoutAction:(UIBarButtonItem *)sender {        SinaWeibo *sinaweibo = [self sinaweibo];    [sinaweibo logOut];}- (IBAction)_loginAction:(UIBarButtonItem *)sender {        SinaWeibo *sinaweibo = [self sinaweibo];        [sinaweibo logIn];}- (SinaWeibo *) sinaweibo {        AppDelegate *delegate = (AppDelegate *)[UIApplication sharedApplication].delegate;        return delegate.sinaweibo;}#pragma mark - SinaWeiboRequest delegate- (void)request:(SinaWeiboRequest *)request didFailWithError:(NSError *)error {    NSLog(@"加载网络失败:%@",error);}- (void)request:(SinaWeiboRequest *)request didFinishLoadingWithResult:(id)result {        NSLog(@"%@",result);    }





  

0 0
原创粉丝点击