开放平台:新浪微博 for iOS-阿里云开发者社区

开发者社区> 余书懿> 正文

开放平台:新浪微博 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做为应用推广的一个主要途径,是必须好好学习一下的,如何勾起和引起用户分享的欲望,让更多的人知道你的应用,那么离成功就不远了.




版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
9975 0
“阿里云开放平台俱乐部”首站启航,助力企业基于Terraform完成上云进阶
简介:阿里云开放平台致力于帮助开发者快速上云并完成云上管理,未来将举办一系列开发者沙龙,帮助开发者解决如何“降本、提效”的管理云资源等问题
1915 0
阿里云服务器ECS远程登录用户名密码查询方法
阿里云服务器ECS远程连接登录输入用户名和密码,阿里云没有默认密码,如果购买时没设置需要先重置实例密码,Windows用户名是administrator,Linux账号是root,阿小云来详细说下阿里云服务器远程登录连接用户名和密码查询方法
11573 0
windows server 2008阿里云ECS服务器安全设置
最近我们Sinesafe安全公司在为客户使用阿里云ecs服务器做安全的过程中,发现服务器基础安全性都没有做。为了为站长们提供更加有效的安全基础解决方案,我们Sinesafe将对阿里云服务器win2008 系统进行基础安全部署实战过程! 比较重要的几部分 1.
9138 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
13738 0
阿里云ECS云服务器初始化设置教程方法
阿里云ECS云服务器初始化是指将云服务器系统恢复到最初状态的过程,阿里云的服务器初始化是通过更换系统盘来实现的,是免费的,阿里云百科网分享服务器初始化教程: 服务器初始化教程方法 本文的服务器初始化是指将ECS云服务器系统恢复到最初状态,服务器中的数据也会被清空,所以初始化之前一定要先备份好。
11875 0
阿里云服务器ECS登录用户名是什么?系统不同默认账号也不同
阿里云服务器Windows系统默认用户名administrator,Linux镜像服务器用户名root
4447 0
阿里云ECS云服务器初始化设置教程方法
阿里云ECS云服务器初始化是指将云服务器系统恢复到最初状态的过程,阿里云的服务器初始化是通过更换系统盘来实现的,是免费的,阿里云百科网分享服务器初始化教程: 服务器初始化教程方法 本文的服务器初始化是指将ECS云服务器系统恢复到最初状态,服务器中的数据也会被清空,所以初始化之前一定要先备份好。
7316 0
+关注
余书懿
喜欢苹果,痴情技术! 专注于移动互联网,做出好产品改变世界^^! My Github https://github.com/yushuyi
101
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载