开放平台:新浪微博 for iOS

简介: 引言: 新浪微博几乎是把全平台数据的API接口都开放了出来,因此,很多优秀的第三方微博客户端在功能方面都非常的全面. 而通过SNS的分享推广方式在App世界里已经非常的普遍,甚至随处可见,本篇主要介绍一下App是如何跟新浪微博关联的.

引言:

新浪微博几乎是把全平台数据的API接口都开放了出来,因此,很多优秀的第三方微博客户端在功能方面都非常的全面.

而通过SNS的分享推广方式在App世界里已经非常的普遍,甚至随处可见,本篇主要介绍一下App是如何跟新浪微博关联的.



参考资料: 

1.开发平台首页:

http://open.weibo.com/?bottomnav=1&wvr=5

2.API文档首页:

http://open.weibo.com/wiki/API文档_V2

3.API错误代码说明地址:

http://open.weibo.com/wiki/Error_code

4.iOS SDK 地址:

https://github.com/mobileresearch/weibo_ios_sdk_sso-oauth

5.授权机制:

http://open.weibo.com/wiki/授权机制说明

6.开发者管理中心

http://open.weibo.com/apps




使用:


在管理中心中创建自己的应用以后,会得到AppKey App Secret 

这两个值 是初始化新浪微博SDK必须要用到的两个参数. 

当执行 login 函数时 可能遇到的错误如下


1:访问出错提示


表示: 微博SDK初始化时设置的 appRedirectURI  和微博开放平台-开发者管理中心-应用信息-高级信息-OAuth2.0 授权设置-授权回调页

所设置的值不一样,才会出现如上错误.



2:调用新浪微博客户端授权以后没有正常返回应用.

1:检查 URL type  "URL scheme” 是否设置了名为: sinaweibosso.加AppID 如图: 

2:AppDelegate 中 是否实现委托函数:

-(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
    NSLog(@"%@",url.scheme);
    //如果涉及其他应用交互,请做如下判断,例如:还可能和新浪微博进行交互
    if ([url.scheme isEqualToString:Key_weiXinAppID]) {
        return [WXApi handleOpenURL:url delegate:self];
    }else if ([url.scheme isEqualToString:[@"sinaweibosso" stringByAppendingPathExtension:Key_sinaWeiboAppID]])
    {
        return [[SinaWeiBoManage defaultInstance].sinaWeibo handleOpenURL:url];
    }else
    {
        return YES;
    }
}

以上设置完成以后,不出意外,将会响应授权结果.

接下来就主要开始调用API来进行微博的数据交互了.

举个简单的例子,如何获取授权用户的个人信息:

NSMutableDictionary *params = [[NSMutableDictionary alloc] init];
[params setObject:userId forKey:@"uid"];
[sinaWeibo requestWithURL:@"users/show.json"
                   params:params
               httpMethod:@"GET"
                 delegate:self];

具体要传入什么参数,请查阅官方API文档.

得到结果后会响应成功或者失败的委托:

此时可以用过链接名称来识别请求类型:

- (void)request:(SinaWeiboRequest *)request didFailWithError:(NSError *)error
{
    //获取关注列表
    if ([request.url hasSuffix:@"friendships/friends.json"])
    {
        if ([delegate respondsToSelector:@selector(sinaWeiBoManage:withFriendListResult:withRequestDataType:isSuccess:)]) {
            [delegate sinaWeiBoManage:self withFriendListResult:nil withRequestDataType:self.requestDataType isSuccess:NO];
        }
    }
}



关于iOS 6中内置微博功能:

在iOS6中苹果集成了新浪微博的社交环境,所以,如果用户在设置界面中授权了新浪微博账户,我们第三方应用中就可以直接使用,利用其发微博等等

首先引入两个 新的 framework

分别是: 

Accounts.framework :用于获取系统设置中的 账户信息

Social.framework :用于对第三方开放平台进行数据交互.


流程分为两步:

首先要知道用户有没有在系统的 设置中 授权了对应的账户,

如果拿到对应的账户信息以后就可以开始对第三方开放平台进行数据交互了,代码如下:

// Create an account store object. 创建账户集合
ACAccountStore *accountStore = [[ACAccountStore alloc] init];

// Create an account type that ensures Twitter accounts are retrieved. 确定好 账户类型  新浪微博 还是 Facebook  还是 Twitter
ACAccountType *accountType = [accountStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierSinaWeibo];

// Request access from the user to use their Twitter accounts. //异步请求 来得到对应类型的账户信息
[accountStore requestAccessToAccountsWithType:accountType withCompletionHandler:^(BOOL granted, NSError *error) {
    if(granted) {//如果 granted 返回 NO 表示一个账户都没有设置
        // Get the list of Twitter accounts.
        NSArray *accountsArray = [accountStore accountsWithAccountType:accountType]; //可能存在多个,看你要用哪个,最好让用户选择一下
        
        // For the sake of brevity, we'll assume there is only one Twitter account present.
        // You would ideally ask the user which account they want to tweet from, if there is more than one Twitter account present.
        if ([accountsArray count] > 0) {
            // Grab the initial Twitter account to tweet from.
            ACAccount *sinaWeiboAccount = [accountsArray objectAtIndex:0];
            
            NSMutableDictionary *params = [[NSMutableDictionary alloc] init];
            [params setObject:@"一条新的微博" forKey:@"status"];
            SLRequest *slRequest = [SLRequest requestForServiceType:SLServiceTypeSinaWeibo requestMethod:SLRequestMethodPOST URL:[NSURL URLWithString:@"https://open.weibo.cn/2/statuses/update.json"] parameters:params];
            slRequest.account = sinaWeiboAccount;//这行代码一定要赋值,负责数据交互一定失败
            [slRequest performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error) {
                NSLog(@"%@ %@",urlResponse.URL,error);
                
                NSDictionary *dic =  [NSJSONSerialization JSONObjectWithData:responseData options:NSJSONReadingAllowFragments error:nil];
                NSLog(@"%@",dic);
            }];
            
        }
    }
}];

在拿到每个 ACAccount 以后 自身都有一个 identifier 啊在用户确认选好了使用哪个账户时最好能够保存下来,那么下次可以直接通过如下代码获取到对应的账户

[accountStore accountWithIdentifier:sinaWeiboAccount.identifier];




总结:

SNS做为应用推广的一个主要途径,是必须好好学习一下的,如何勾起和引起用户分享的欲望,让更多的人知道你的应用,那么离成功就不远了.




目录
相关文章
|
7月前
|
定位技术 开发工具 iOS开发
百宝箱开放平台 ✖️ iOS 集成说明
本文介绍百宝箱智能体与友盟+ iOS 应用集成方法,涵盖手动集成、权限配置、SDK 初始化、日志查看及效果验证。提供依赖库添加、Info.plist 权限声明、channel 规范、demo 工程下载与运行说明,助您快速完成接入。
400 1
|
存储 缓存 开发工具
开放平台:Parse for iOS
引言: Parse一款基于Baas的后端云存储服务平台,为开发者提供云端数据存储和读取的能力,Parse团队在其SDK方面花费了大功夫,实现了很多非常有用的功能.
1502 0
|
API 开发工具 iOS开发
开放平台:微信 for iOS
按照常例,列一些网址先: 微信开放平台首页: http://open.weixin.qq.com 微信 iOS SDK 官方下载地址: http://open.
1410 0
|
定位技术 iOS开发 数据安全/隐私保护
开放平台:百度地图 for iOS 使用相关
今天开始使用百度地图的API实现相关的地理位置功能 在根据官方文档: http://developer.baidu.com/map/sdkiosdev-2.
1212 0
|
开发框架 前端开发 Android开发
安卓与iOS开发中的跨平台策略
在移动应用开发的战场上,安卓和iOS两大阵营各据一方。随着技术的演进,跨平台开发框架成为开发者的新宠,旨在实现一次编码、多平台部署的梦想。本文将探讨跨平台开发的优势与挑战,并分享实用的开发技巧,帮助开发者在安卓和iOS的世界中游刃有余。
|
iOS开发 开发者
uniapp开发ios打包Error code = -5000 Error message: Error: certificate file(p12) import failed!报错问题如何解决
uniapp开发ios打包Error code = -5000 Error message: Error: certificate file(p12) import failed!报错问题如何解决
962 67
uniapp开发ios打包Error code = -5000 Error message: Error: certificate file(p12) import failed!报错问题如何解决
|
iOS开发 开发者 MacOS
深入探索iOS开发中的SwiftUI框架
【10月更文挑战第21天】 本文将带领读者深入了解Apple最新推出的SwiftUI框架,这一革命性的用户界面构建工具为iOS开发者提供了一种声明式、高效且直观的方式来创建复杂的用户界面。通过分析SwiftUI的核心概念、主要特性以及在实际项目中的应用示例,我们将展示如何利用SwiftUI简化UI代码,提高开发效率,并保持应用程序的高性能和响应性。无论你是iOS开发的新手还是有经验的开发者,本文都将为你提供宝贵的见解和实用的指导。
506 66
|
JavaScript 搜索推荐 Android开发
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
609 8
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
|
存储 监控 API
app开发之安卓Android+苹果ios打包所有权限对应解释列表【长期更新】-以及默认打包自动添加权限列表和简化后的基本打包权限列表以uniapp为例-优雅草央千澈
app开发之安卓Android+苹果ios打包所有权限对应解释列表【长期更新】-以及默认打包自动添加权限列表和简化后的基本打包权限列表以uniapp为例-优雅草央千澈
1851 11