原生分享(三):微博分享

如果觉得我写的还不错,请关注我的新浪微博@杨浩宇-小橘爷,最新文章即时推送~
原生分享(一):微信分享之搭建分享环境
原生分享(二):微信分享之使用分享

微博分享

书接上文,前两篇博客我们介绍了如何使用微信的原生分享。但我还是那句话,我写了原生的分享,但大家在做项目的时候千万不要直接上原生,一定要用第三方!!!不然受苦受难的可是自己~

让你的应用在微博开放平台上运营,只需要通过简单的六个步骤:

图1-1 六个步骤

成为开发者&创建应用

这一部分涉及较少的技术性问题,请大家上新手指南进行查看。

其中还是有几个需要注意的点:

  • 设定授权回调:请在“我的应用 - 应用信息 - 高级信息”中填写您的应用回调 ,这样才能使 OAuth2.0 授权正常进行 。如果您的APPSECRET发生泄露,您也可以通过该页面中的重置按钮对其重置。注意: iOS 应用推荐使用默认授权回调页!地址为:https://api.weibo.com/oauth2/default.html
  • 设定 Apple ID 和 Bundle ID:请在“我的应用 - 应用信息 - 基本信息”中填写您的 Apple ID 和 Bundle ID,这样您的应用才能正常使用微博 iOS SDK 授权和回调。(更改设置有延时,建议退出账号重新登录后再测试)。注: Apple ID 如果没有的话,先随意填写,当获取了合法的 Apple ID 之后请马上到这个页面修改为正式版本。Bundle ID 需要和工程设置保证一致

设置工程回调 URL Types

如下图所示:其中 Identifier 应为自己的 SSO 授权回调地址,URL Scheme 则为 WB[APP KEY]。

图1-2 设置URL Types

添加 SDK 文件到工程

将从 GitHub 上下载的 libWeiboSDK 文件夹添加到工程,其中包含 WeiboSDK.h、WeiboUser.h、WBHttpRequest.h、WBHttpRequest+WeiboUser.h、WBHttpRequest+WeiboShare.h、WBHttpRequest+WeiboToken.h、WBSDKBasicButton.h、WBSDKRelationshipButton.h、WBSDKCommentButton.h、WeiboSDK+Statistics.h 这10个.h文件以及 libWeiboSDK.a 和 WeiboSDK.bundle,统共12个文件。


图1-3 添加SDK文件到工程

在工程中引入静态库之后,需要在编译时添加 –ObjC 编译选项,避免静态库中类加载不全造成程序崩溃。

方法:程序 Target->Buid Settings->Linking 下 OtherLinker Flags 项添加 -ObjC。

添加 Framework 文件到工程

在工程中修改 Other Linker Flags 后,需要修改编译步骤的链接库设置,避免链接阶段由于库的设置错误导致程序崩溃。

方法:程序 Target->Buid Phases->Link BinaryWith Libraries 下添加以下 Framework 到工程中。需要添加的 Frameworks 为:QuartzCore.framework、ImageIO.framework、SystemConfiguration.framework、Security.framework、CoreTelephony.framework、CoreText.framework、UIKit.framework、Foundation.framework、CoreGraphics.framework 、libz.dylib、libsqlite3.dylib

图1-4 添加FrameWork

定义常用的常量

定义应用 SSO 登录或者 Oauth2.0 认证所需的几个常量。

AppKey:第三方应用申请的 AppKey, 来身份鉴证、显示来源等;

AppRedirectURL: 应用回调 ,在进行 Oauth2.0 登录认证时所使用 。对于 Mobile 客户端应用来说,是不存在 Server 的,故此处的应用回调地址只要与新浪微博开放平台->我的应用 ->应用信息-> 高级应用 ->授权设置->应用回调中的 url 地址保持一致就可以了,如下所示:

#define kAppKey         @"2045436852"
#define kRedirectURI    @"http://www.sina.com"

注册 AppKey (ClientID)

程序启动时,在代码中向微博终端注册你的 AppKey,如果初次集成微博 SDK,建议打开调试选项以便输出调试信息。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[WeiboSDK enableDebugMode:YES];
[WeiboSDK registerApp:kAppKey];
return YES;
}

重写 AppDelegate 的 handleOpenURL 和 openURL 方法

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
    return [WeiboSDK handleOpenURL:url delegate:self];
}

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url
{
    return [WeiboSDK handleOpenURL:url delegate:self ];
}

至此,微博 SDK 的导入和初始化工作就都完成了~
- (void)shareButtonPressed
{
// 获取AppDelegate
AppDelegate myDelegate =(AppDelegate)[[UIApplication sharedApplication] delegate];
/**
第三方应用向微博客户端请求认证的消息结构

    第三方应用向微博客户端申请认证时,需要调用[WeiboSDK sendRequest:]函数, 向微博客户端发送一个WBAuthorizeRequest的消息结构。

    微博客户端处理完后会向第三方应用发送一个结构为 WBAuthorizeResponse 的处理结果。
 */
    WBAuthorizeRequest *authRequest = [WBAuthorizeRequest request];
    // 微博开放平台第三方应用授权回调页地址,默认为`http://`
    authRequest.redirectURI = kRedirectURI;
    // 微博开放平台第三方应用 scope,多个 scope 用逗号分隔
    authRequest.scope = @"all";
    // 第三方应用发送消息至微博客户端程序的消息结构体,其中 message 类型我会在下面放出
    WBSendMessageToWeiboRequest *request = [WBSendMessageToWeiboRequest requestWithMessage:[self messageToShare] authInfo:authRequest access_token:myDelegate.wbtoken];
    // 自定义信息字典,用于数据传输过程中存储相关的上下文环境数据

    // 第三方应用给微博客户端程序发送 request 时,可以在 userInfo 中存储请求相关的信息。
    request.userInfo = @{@"ShareMessageFrom": @"SendMessageToWeiboViewController",
                     @"Other_Info_1": [NSNumber numberWithInt:123],
                     @"Other_Info_2": @[@"obj1", @"obj2"],
                     @"Other_Info_3": @{@"key1": @"obj1", @"key2": @"obj2"}};
    // 发送请求给微博客户端程序,并切换到微博

    // 请求发送给微博客户端程序之后,微博客户端程序会进行相关的处理,处理完成之后一定会调用 [WeiboSDKDelegate didReceiveWeiboResponse:] 方法将处理结果返回给第三方应用
    [WeiboSDK sendRequest:request];
}

文字类型的消息格式

// 微博客户端程序和第三方应用之间传递的消息结构

// 一个消息结构由三部分组成:文字、图片和多媒体数据。三部分内容中至少有一项不为空,图片和多媒体数据不能共存。
WBMessageObject *message = [WBMessageObject message];
message.text = NSLocalizedString(@"测试通过WeiboSDK发送文字到微博!", nil);

图片类型的消息格式

WBMessageObject *message = [WBMessageObject message];
// 消息中包含的图片数据对象
WBImageObject *image = [WBImageObject object];
// 图片真实数据内容
image.imageData = [NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"image_1" ofType:@"jpg"]];
// 消息的图片内容
message.imageObject = image;

网页类型的消息格式

WBMessageObject *message = [WBMessageObject message];
// 消息中包含的网页数据对象
WBWebpageObject *webpage = [WBWebpageObject object];
// 对象唯一ID,用于唯一标识一个多媒体内容
// 当第三方应用分享多媒体内容到微博时,应该将此参数设置为被分享的内容在自己的系统中的唯一标识
webpage.objectID = @"identifier1";
webpage.title = NSLocalizedString(@"分享网页标题", nil);
webpage.description = [NSString stringWithFormat:NSLocalizedString(@"分享网页内容简介-%.0f", nil), [[NSDate date] timeIntervalSince1970]];
// 多媒体内容缩略图
webpage.thumbnailData = [NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"image_2" ofType:@"jpg"]];
// 网页的url地址
webpage.webpageUrl = @"http://sina.cn?a=1";
// 消息的多媒体内容
message.mediaObject = webpage;

这就是微博分享的环境搭建和基本使用的全部内容了,捎带脚吐槽一句,微博的分享真难用啊,我就测试了几次就说我账号异常,我也是……

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,542评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,596评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,021评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,682评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,792评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,985评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,107评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,845评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,299评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,612评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,747评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,441评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,072评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,828评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,069评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,545评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,658评论 2 350

推荐阅读更多精彩内容