完整的iOS新浪微博分享功能开发

 更新时间:2020年07月29日 10:52:43   作者:young_for_your  
这篇文章主要为大家详细介绍了较为完整的iOS新浪微博分享功能开发的相关资料,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了iOS新浪微博分享功能的具体代码,供大家参考,具体内容如下

做新浪分享 需先去http://open.weibo.com/apps注册开发者app 很简单!

第1步

第2步

3

设置你的应用的信息

找到自己的appkey

还需要设置自己的kAppRedirectURL测试可以随便写个!

开发部分在下面ios新浪微博分享(2)这部分:

开发需要下载官方的sdkhttp://open.weibo.com/wiki/SDK#iOS_SDK

本人下载的版本

新建一个viewcontrroler==WeiBoViewController

效果图

h文件

#import
#import "SinaWeb/SinaWeibo/SinaWeibo.h"
#import "SinaWeb/SinaWeibo/SinaWeiboRequest.h"
@interface WeiBoViewController : UIViewController<</span>SinaWeiboDelegate,SinaWeiboRequestDelegate>
{
 UIButton *_shareButton; 
 UITextView *_textView; 
 UIView *_shareView; 
 UIActivityIndicatorView *_indicator;}
@property (strong, nonatomic) UIButton *shareButton;
@property (strong, nonatomic) UITextView *textView;
@property (strong, nonatomic) UIView *shareView;
@property (strong, nonatomic) UIActivityIndicatorView *indicator;
@property (readonly, nonatomic) SinaWeibo *sinaWeibo;
- (void) addButton;
- (void) addShareView;
- (void) share:(UIButton*) sender;
- (void) removeShare:(UIButton*) sender;
- (void) sendShare:(UIButton*) sender;
- (void) exitShare:(UIButton*) sender;
@end

m文件

#import "WeiBoViewController.h"
#define kAppKey  @"appkey"
#define kAppSecret  @"appSecret"
#define kAppRedirectURL @"重定向url"
@interface WeiBoViewController ()

@end

@implementation WeiBoViewController
@synthesize shareButton = _shareButton;
@synthesize textView = _textView;
@synthesize shareView = _shareView;
@synthesize indicator = _indicator;
@synthesize sinaWeibo = _sinaWeibo;


- (SinaWeibo*)sinaWeibo

{

 _sinaWeibo.delegate=self;

 return _sinaWeibo;

}


- (void)viewDidLoad

{
 [super viewDidLoad]; 
 _indicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
 [_indicator setFrame:CGRectMake(0, 0, 50, 50)];
 _indicator.center = self.view.center;
 [self.view addSubview:_indicator];

 
 _sinaWeibo = [[SinaWeibo alloc] initWithAppKey:kAppKey appSecret:kAppSecret appRedirectURI:kAppRedirectURL 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"];

 }
 
 [self addButton];

}

- (void) addButton
{
 _shareButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
 UIImage*butimg=[UIImage imageNamed:@"button_background@2x.png"];

 UIImage*logobutimg=[UIImage imageNamed:@"logo@2x.png"];
 [self.shareButton setFrame:CGRectMake(10, 10, butimg.size.width, butimg.size.height)];
 [self.shareButton setBackgroundImage:butimg forState:UIControlStateNormal];
 [self.shareButton setImage:logobutimg forState:UIControlStateNormal];
 [self.shareButton addTarget:self action:@selector(share:) forControlEvents:UIControlEventTouchUpInside];
 [self.view addSubview:self.shareButton];

}



//分享按钮响应方法

- (void) share:(UIButton*) sender

{
 SinaWeibo *sinaWeibo = [self sinaWeibo];
 BOOL authValid = sinaWeibo.isAuthValid; 
 if (!authValid)
 {
 [sinaWeibo logIn];
 }
 else
 {
 NSString *postStatusText = @"[哈哈]"; 
 SinaWeibo *sinaWeibo = [self sinaWeibo];
 //只发送汉字
// [sinaWeibo requestWithURL:@"statuses/update.json" params:[NSMutableDictionary dictionaryWithObjectsAndKeys:postStatusText,@"status", nil] httpMethod:@"POST" delegate:self];
//图片和连接 和文字

 [sinaWeibo requestWithURL:@"statuses/upload.json"

    params:[NSMutableDictionary dictionaryWithObjectsAndKeys:

     @"要发布的微博文本内容,超链接http://baidu.com", @"status",
     [UIImage imageNamed:@"Icon.png"], @"pic", nil]

   httpMethod:@"POST"
    delegate:self];
 
 [_shareView removeFromSuperview]; 
 [self.indicator startAnimating];
 } 
}

//登陆成功后回调方法
- (void) sinaweiboDidLogIn:(SinaWeibo *)sinaweibo
{
 NSLog(@"%@--%@--%@--%@",sinaweibo.accessToken,sinaweibo.expirationDate, sinaweibo.userID,sinaweibo.refreshToken);
 NSDictionary *authData = [NSDictionary dictionaryWithObjectsAndKeys:
    sinaweibo.accessToken, @"AccessTokenKey",
    sinaweibo.expirationDate, @"ExpirationDateKey",
    sinaweibo.userID, @"UserIDKey",
    sinaweibo.refreshToken, @"refresh_token", nil];
 [[NSUserDefaults standardUserDefaults] setObject:authData forKey:@"SinaWeiboAuthData"];

 [[NSUserDefaults standardUserDefaults] synchronize];

//可以在此选在授权成功后直接发送

}
//取消按钮回调方法
- (void) removeShare:(UIButton*) sender
{
 [_shareView removeFromSuperview];

}

//发送按钮回调方法

- (void) sendShare:(UIButton*) sender

{
 NSString *postStatusText = self.textView.text; 
 SinaWeibo *sinaWeibo = [self sinaWeibo]; 
 [sinaWeibo requestWithURL:@"statuses/updates.json" params:[NSMutableDictionary dictionaryWithObjectsAndKeys:postStatusText,@"status", nil] httpMethod:@"POST" delegate:self]; 
 [_shareView removeFromSuperview]; 
 [self.indicator startAnimating];

}

//退出登陆回调方法
- (void) exitShare:(UIButton*) sender
{
 SinaWeibo *sinaWeibo = [self sinaWeibo]; 
 [sinaWeibo logOut]; 
 [_shareView removeFromSuperview]; 
 NSLog(@"退出登陆");
}

//请求完成回调该方法
- (void)request:(SinaWeiboRequest *)request didFinishLoadingWithResult:(id)result
{
 [self.indicator stopAnimating]; 
 UIAlertView* alert = [[UIAlertView alloc] initWithTitle:@"发送成功" message:@"提示" delegate:self cancelButtonTitle:@"确定" otherButtonTitles: nil];
 [alert show];
 [alert release];
 NSLog(@"发送成功");

}



//请求失败回调该方法
- (void)request:(SinaWeiboRequest *)request didFailWithError:(NSError *)error

{
 [self.indicator stopAnimating]; 
 UIAlertView* alert = [[UIAlertView alloc] initWithTitle:@"发送失败,请检测网络链接" message:@"提示" delegate:self cancelButtonTitle:@"确定" otherButtonTitles: nil];
 [alert show];
 [alert release];
 NSLog(@"发送失败");

}

- (void)viewDidUnload
{
 [super viewDidUnload];
 // Release any retained subviews of the main view.
}

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
 return (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);

}

@end

源码下载:http://xiazai.jb51.net/201611/yuanma/SinaWeiboShare(jb51.net).rar

个人信息获得

@interface UserInfoViewController : UIViewController<SinaWeiboRequestDelegate>//实现请求代理

BOOL authValid = self.sina.isAuthValid;//判断是否授权了

 if (authValid){

 [self.sina requestWithURL:@"users/show.json" params:[NSMutableDictionarydictionaryWithObject:self.sina.userID forKey:@"uid"] httpMethod:@"GET" delegate:self];

 }

//请求失败回调方法

- (void)request:(SinaWeiboRequest *)request didFailWithError:(NSError *)error{

 if ([request.url hasSuffix:@"users/show.json"]){

 [self.userInfoDic release], self.userInfoDic = nil;

 }

}



//请求成功回调方法

- (void)request:(SinaWeiboRequest *)request didFinishLoadingWithResult:(id)result{

 if ([request.url hasSuffix:@"users/show.json"]){

 [self.userInfoDic release];

 self.userInfoDic = [result retain];

 //NSLog(@"用户信息字典:%@", self.userInfoDic); 字典数据 返回字段下面

 }

 

}

返回字段说明

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • IOS展开三级列表效果示例

    IOS展开三级列表效果示例

    今天介绍的是一个很不错的三级列表展开效果的例子,文章运用实例代码介绍的很详细,提供给学习IOS的小伙伴们使用。
    2016-08-08
  • Flutter之PageView页面缓存与KeepAlive

    Flutter之PageView页面缓存与KeepAlive

    这篇文章主要为大家介绍了Flutter之PageView页面缓存与KeepAlive示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-10-10
  • iOS 监听回调机制KVO实例

    iOS 监听回调机制KVO实例

    下面小编就为大家分享一篇iOS 监听回调机制KVO实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-01-01
  • 如何去掉Xcode工程中某种类型的警告

    如何去掉Xcode工程中某种类型的警告

    这篇文章主要给大家介绍了关于如何去掉Xcode工程中某种类型的警告,文中通过示例代码介绍的非常详细,对大家学习或者使用Xcode具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-04-04
  • 谈谈XCode9的新变化

    谈谈XCode9的新变化

    这篇文章主要介绍了谈谈XCode9的新变化,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09
  • iOS中使用Fastlane实现自动化打包和发布

    iOS中使用Fastlane实现自动化打包和发布

    Fastlane是一套使用Ruby写的自动化工具集,用于iOS和Android的自动化打包、发布等工作,可以节省大量的时间。下面给大家介绍ios fastlane 自动化打包和发布的安装方法,需要的朋友参考下吧
    2017-05-05
  • LRecyclerView侧滑iOS阻塞效果不完整的解决办法

    LRecyclerView侧滑iOS阻塞效果不完整的解决办法

    这篇文章主要介绍了LRecyclerView侧滑iOS阻塞效果不完整的解决办法,非常不错,具有参考借鉴价值,需要的朋友参考下
    2016-12-12
  • iOS开发--仿新闻首页效果WMPageController的使用详解

    iOS开发--仿新闻首页效果WMPageController的使用详解

    这篇文章主要介绍了iOS开发--仿新闻首页效果WMPageController的使用详解,详解的介绍了iOS开发中第三方库WMPageController控件的使用方法,有需要的可以了解下。
    2016-11-11
  • iOS 禁止按钮在一定时间内连续点击

    iOS 禁止按钮在一定时间内连续点击

    本文主要介绍了iOS中禁止按钮在一定时间内连续点击的方法,具有很好的参考价值,下面跟着小编一起来看下吧
    2017-02-02
  • CocoaPods 出现LoadError - cannot load such file -- nanaimo错误解决办法

    CocoaPods 出现LoadError - cannot load such file -- nanaimo错误解决

    这篇文章主要介绍了CocoaPods 出现LoadError - cannot load such file -- nanaimo错误解决办法的相关资料,需要的朋友可以参考下
    2017-04-04

最新评论