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

本文实例为大家分享了Android九宫格图片展示的具体代码,供大家参考,具体内容如下

做新浪分享 需先去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); 字典数据 返回字段下面

 }

}

返回字段说明

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

(0)

相关推荐

  • iOS开发之路--微博“更多”页面

    最终效果图: MoreViewController.m // // MoreViewController.m // 20_帅哥no微博 // // Created by beyond on 14-8-4. // Copyright (c) 2014年 com.beyond. All rights reserved. // #import "MoreViewController.h" @interface MoreViewController () { // more.plist根是字典

  • iOS 仿微博客户端红包加载界面 XLDotLoading效果

    一.显示效果 二.原理简介 1.思路 要实现这个效果需要先知道这两个硬币是怎样运动的,然后通过放大.缩小的效果实现的这种有距离感的效果.思路如下: 一.这两个硬币是在一定范围内做相对运动的,可以先使一个硬币在一个固定范围内做左右的往复运动,另一个硬币和它做"相对运动"即可. 二.让硬币从左至右移动时先变小再回复正常:从右至左移动时先变大再回复正常:这样就实现了这用有距离感的"相对运动". 2.代码 第一步 要实现一个硬币在一定范围内实现左右往复运动,需要先固定一个范

  • iOS开发之路--微博OAuth授权_取得用户授权的accessToken

    最终效果图: OauthViewController.m // // OauthViewController.m // 20_帅哥no微博 // // Created by beyond on 14-8-5. // Copyright (c) 2014年 com.beyond. All rights reserved. // 授权控制器,仅运行一次,取得了当前用户的access_token和uid之后,存档,切换窗口的主控制器 #import "OauthViewController.h&quo

  • iOS中使用UItableviewcell实现团购和微博界面的示例

    使用xib自定义UItableviewcell实现一个简单的团购应用界面布局 一.项目文件结构和plist文件 二.实现效果 三.代码示例 1.没有使用配套的类,而是直接使用xib文件控件tag值操作 数据模型部分: YYtg.h文件 复制代码 代码如下: // //  YYtg.h //  01-团购数据显示(没有配套的类) // //  Created by apple on 14-5-29. //  Copyright (c) 2014年 itcase. All rights reserv

  • iOS仿微博客户端一条微博的展示效果

    前言 做一个微博客户端的第三方是自学的第一个实践的项目,自从从事iOS工作之后,就把这个项目给搁置了.趁现在过年回来有些空闲时间,再次修改(总觉得项目就是不停地修改).并且记录一点东西,以后可再回头看看从前走过的路,挖过的坑.这是一条微博的展示,不是整个项目. 废话不多说,先上效果图: 拆分控件 在开始动手写代码之前,我们得先确定怎么去实现这样子的布局,也就是分析需要用到哪些控件. 观察微博客户端,整体是可滑动的,而且界面展示比较规律的,所以应该是使用UITableView实现的.那么一条微博应

  • iOS新浪微博、腾讯微博分享功能实例

    一个是新浪微博,腾讯微博的分享按钮,一个是他们的绑定情况(其实就是是否授权).点击微博分享中新浪或腾讯按钮,就进行相应的授权(若没授权),显示微博内容,而后发布微博.设置界面中的绑定,就是相关的应用授权. 呵呵,其实也蛮简单滴. 首先分别从新浪微博开放平台(http://open.weibo.com/).腾讯微博开放平台(http://dev.t.qq.com/)中注册应用,获取到Appkey,AppSecret和AppURL(其中 AppURL是要自己填写的). 然后分别下载相关的SDK. h

  • iOS仿微博图片浏览器

    KNPhotoBrower 高仿微博图片浏览器 PhotoBrower.gif 一.功能描述及要点 1.加载网络九宫格图片,collectionView,scrollView 2.SDWebImage下载图片,KNProgressHUD显示加载进度 3.高仿微博,显示动画,KNToast提示 二.方法调用 1.创建KNPhotoBrower,并传入相应的参数 // 每一个图片控件对象, 对一一对应 KNPhotoItems ,再将多个KNPhotoItems 对象放入数组 KNPhotoItem

  • iOS开发之路--微博新特性页面

    BeyondAppDelegate.m // // BeyondAppDelegate.m // 20_帅哥no微博 // // Created by beyond on 14-8-3. // Copyright (c) 2014年 com.beyond. All rights reserved. // #import "BeyondAppDelegate.h" #import "BeyondViewController.h" #import "NewFe

  • iOS开发之路--微博骨架搭建

    最终效果图: BeyondViewController.m // // BeyondViewController.m // 20_帅哥no微博 // // Created by beyond on 14-8-3. // Copyright (c) 2014年 com.beyond. All rights reserved. // 这个就是主控制器,分为两块,下面是Dock栏,上面是显示不同的子控制器的view,子控制器最好用导航控制器包装一下,这样子控制器就自带了导航条,左按钮,标题,右按钮 /

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

    本文实例为大家分享了Android九宫格图片展示的具体代码,供大家参考,具体内容如下 做新浪分享 需先去http://open.weibo.com/apps注册开发者app 很简单! 第1步 第2步 3 设置你的应用的信息 找到自己的appkey 还需要设置自己的kAppRedirectURL测试可以随便写个! 开发部分在下面ios新浪微博分享(2)这部分: 开发需要下载官方的sdkhttp://open.weibo.com/wiki/SDK#iOS_SDK 本人下载的版本 新建一个viewco

  • Android APP集成新浪微博分享功能

    本文为大家分享了新浪微博分享功能集成,供大家参考,具体内容如下 下载新浪微博Android SDK 直接导入weibosdkcore.jar:适用于只需要授权.分享.网络请求框架功能的项目. 无论使用哪一种方式,都需要先将demo中lib目录下的对应的全部 libweibosdkcore.so文件目录拷贝到你的目标工程中Demo.在app–>src–>main中新建文件夹jniLibs,将demo 中lib目录下的对应的全部 libweibosdkcore.so文件目录拷贝到其中,不要改变任何

  • 微信公众号网页分享功能开发的示例代码

    现在每天都可以看到很多微信分享的链接上面有网站或者商家的自定义的分享标题,和分享链接的描述及分享出去的图像,例如下面的分享出去的链接: 上面这个是微信的js-SDK页面分享给微信好友在聊天列表中显示的视觉效果. 微信JS-SDK Demo :这个是微信网页分享出去的标题. 微信JS-SDK,帮助第三方为用户提供更优质的移动web服务:这个是被分享的这个页面的分享描述. 微信图标:这个就是自己网站或者自己自定义的图像. 上面这个是微信官方网页分享出去的定义描述,那么怎样实现自己网站网页的自定义分享

  • iOS 微信分享功能简单实现

    PS:此文以简单实现功能为主,不足之前还望指点,大神勿喷. 在此之前如何申请微信认证的Key就不说了,公司一般会有人搞(自己申请一个也非常的简单) 1.首先下载微信SDK:微信SDK下载地址(更多关于微信SDK信息文档请访问官方网站:微信开放平台) 2.导入微信SDK 将下载下来的SDKExport文件夹导入到工程,其中包含3个核心文件libWeChatSDK.a WXApi.h WXApiObject.h(强烈建议大家看看read-me文件) 3.在工程Build Phases -> Link

  • Android中使用ShareSDK集成分享功能的实例代码

    引言 现在APP开发集成分享功能已经是非常普遍的需求了.其他集成分享技术我没有使用过,今天我就来介绍下使用ShareSDK来进行分享功能开发的一些基本步骤和注意点,帮助朋友们避免一些坑.好了,下面切入正题正式开始介绍. 1.ShareSDK开发包及配置 这个不用多说,去他们官网看找SDK开发包和集成文档即可. Android版本地址:http://www.mob.com/downloadDetail/ShareSDK/android. 注意:记得要注册ShareSDK账号获取AppKey哦.这些

  • JavaScript实现选中文字提示新浪微博分享效果

    本文实例为大家分享了JS新浪微博分享功能,供大家参考,具体内容如下 <!DOCTYPE html> <html xmlns:wb="http://open.weibo.com/wb"> <head> <meta charset="utf-8"> <title>javaScript实现选中文字提示新浪微博分享的效果</title> <style type="text/css&quo

  • 微信公众平台开发教程②微信端分享功能图文详解

    本文实例讲述了微信公众平台微信端分享功能.分享给大家供大家参考,具体如下: 背景 初次尝试微信公众号的开发,对于学习方法的探索都是来源于网上的博客.问答,对于参差不齐的信息,自己也是有苦说不出,抽出一点时间写点文章,既是对自己的学习总结,也希望给予同是菜鸟的小白一点帮助. 今天想添加微信分享的功能,如果不进行自定义设计,那么当我们点击分享朋友圈.好友或者QQ好友.空间时,默认的标题就是<title>标签中的信息,而显示的描述信息就是链接,图片多是默认为页面中显示的第一张图片,显然这样的处理是不

  • IOS百度地图导航开发功能实现简述

    以下通过图文并茂的方式给大家讲述百度地图导航开发功能: 第一步:在使用百度导航之前,我们需要在百度地图开放平台上下载导航的 SDK,共85.8M,网速不好的同学可提前准备好. 第二步:引入导航所需的系统包 将AudioToolbox.framework.ImageIO.framework.CoreMotion.framework.CoreLocation.framework.CoreTelephony.framework.MediaPlayer.framework.AVFoundation.fr

  • Android开发中应用程序分享功能实例

    本文实例讲述了Android开发中应用程序分享功能.分享给大家供大家参考,具体如下: Intent shareIntent = new Intent(); shareIntent.setAction(Intent.ACTION_SEND); //设置类型 shareIntent.setType("text/plain"); //设置分享的主题 shareIntent.putExtra("android.intent.extra.SUBJECT", "分享&

  • 详解微信小程序开发—你期待的分享功能来了,微信小程序序新增5大功能

    微信小程序在12月21日发布了新版本的开发工具,并在官网公布新增分享.模板消息.客服消息.扫一扫.带参数二维码功能. 有了分享功能,相信会给很多创业者带来了无限的可能性! 下面就来看看这些新功能到底怎么用吧! 1.分享 可以分享小程序的任何一个页面给好友或群聊.注意是分享给好友或群聊,并没有分享到朋友圈.一方面微信在尝试流量分发方式,但同时又不愿意开放最大的流量入口. 开发文档:https://mp.weixin.qq.com/debug/wxadoc/dev/api/share.html?t=

随机推荐