相关资源地址:

本项目demo地址 :  https://github.com/zhonggaorong/weiboSDKDemo

最新SDK下载:  最新微博SDK

官网注册地址:点击打开链接

最新版本的微博登录实现步骤实现:

1. 使用此SDK需满足以下条件:

  • 在新浪微博开放平台注册并创建应用
  • 已定义本应用的授权回调页
  • 已选择应用为iOS平台,并正确填写Bundle id和apple id  (要与Xcode 工程中的bundle相对应)

注: 关于授权回调页对移动客户端应用来说对用户是不可见的,所以定义为何种形式都将不影响,但是没有定义将无法使用SDK认证登录。建议使用默认回调页 https://api.weibo.com/oauth2/default.html

2. 最新SDK目录结构预览:
    
     
 
3. 把SDK集成到工程。
    1.  通过pod 集成。
  1. pod "WeiboSDK"

2. 手动导入sdk

         1.  把上面预览图上面的文件,全部拖入工程中。
 2.   Other Linker Flags  增加 -all_load.  (一定要把官方说的 -Objc 换成 -all_load) 好大一个坑。
  
    
  3. 添加依赖库。
        在 Target->Buid Phases->Link BinaryWith Libraries 下增加以下库: QuartzCore.frameworkImageIO.framework SystemConfiguration.framework Security.framework CoreTelephony.frameworkCoreText.framework UIKit.framework Foundation.framework CoreGraphics.framework libz.dyliblibsqlite3.dylib
4. 编译工程。应该编译成功。
 
 
5. 针对iOS9的相关问题。
            1. 你需要用到微博的相关功能,如登陆,分享等。并且需要实现跳转到微博的功能,在iOS9系统中就需要在你的app的plist中添加下列键值对。否则在canOpenURL函数执行时,就会返回NO。了解详情请至https://developer.apple.com/videos/wwdc/2015/?id=703

  1. <key>LSApplicationQueriesSchemes</key>
  2. <array>
  3. <string>sinaweibohd</string>
  4. <string>sinaweibo</string>
  5. <string>weibosdk</string>
  6. <string>weibosdk2.5</string>
  7. </array>

   

     2. 增加url Types。
 
 
注意:  bundle ideatefier 一定要与 微博开发者后台要一致,不然会出现调试不成功,有以下错误出现。
  1. Flag Status: -R ------- networkStatusForFlags
  2. 2016-06-21 15:18:31.556 weiboSDKDemo[906:299845] -canOpenURL: failed for URL: "weibosdk://" - error: "(null)"
  3. 2016-06-21 15:18:31.720 weiboSDKDemo[906:299845] Reachability Flag Status: -R ------- networkStatusForFlags
  4. 2016-06-21 15:18:33.350 weiboSDKDemo[906:299845] -[AppDelegate application:openURL:sourceApplication:annotation:]: unrecognized selector sent to instance 0x12d615090
  5. 2016-06-21 15:18:33.351 weiboSDKDemo[906:299845] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[AppDelegate application:openURL:sourceApplication:annotation:]: unrecognized selector sent to instance 0x12d615090'
  6. *** First throw call stack:
  7. (0x1823fee38 0x181a63f80 0x182405ccc 0x182402aa4 0x182300d1c 0x100116a30 0x10021da7c 0x10021da3c 0x1002234e4 0x1823b4dd8 0x1823b2c40 0x1822dcd10 0x183bc4088 0x1875b1f70 0x1000d4f54 0x181e7a8b8)
  8. libc++abi.dyli

4. 正式进行相关编程了。

appDelegate.m中
    1. 向微博进行注册微博, 通过申请的appkey。 
    2. 重写系统方法

  1. application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString *,id> *)options{}
具体代码如下:
 
  1. //
  2. //  AppDelegate.h
  3. //  weiboSDKDemo
  4. //
  5. //  Created by 张国荣 on 16/6/21.
  6. //  Copyright © 2016年 BateOrganization. All rights reserved.
  7. //
  8. #import <UIKit/UIKit.h>
  9. #import "WeiboSDK.h"
  10. @protocol WeiBoDelegate <NSObject>
  11. //登录的代理
  12. -(void)weiboLoginByResponse:(WBBaseResponse *)response;
  13. //分享的大力
  14. -(void)weiboShareSuccessCode:(NSInteger)shareResultCode;
  15. @end
  16. @interface AppDelegate : UIResponder <UIApplicationDelegate>
  17. @property (strong, nonatomic) UIWindow *window;
  18. @property (weak  , nonatomic) id<WeiBoDelegate> weiboDelegate;
  19. @end
  1. //
  2. //  AppDelegate.m
  3. //  weiboSDKDemo
  4. //
  5. //  Created by 张国荣 on 16/6/21.
  6. //  Copyright © 2016年 BateOrganization. All rights reserved.
  7. //
  8. #import "AppDelegate.h"
  9. //申请下来的appkey
  10. #define APP_KEY @"app key"
  11. @interface AppDelegate ()<WeiboSDKDelegate>
  12. @end
  13. @implementation AppDelegate
  14. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
  15. // Override point for customization after application launch.
  16. [WeiboSDK registerApp:APP_KEY];
  17. return YES;
  18. }
  19. // 9.0 后才生效
  20. -(BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString *,id> *)options{
  21. return [WeiboSDK handleOpenURL:url delegate:self];
  22. }
  23. #pragma mark 9.0之前
  24. - (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url{
  25. return [WeiboSDK handleOpenURL:url delegate:self];
  26. }
  27. - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(nullable NSString *)sourceApplication annotation:(id)annotation{
  28. return [WeiboSDK handleOpenURL:url delegate:self];
  29. }
  30. /**
  31. 收到一个来自微博客户端程序的请求
  32. 收到微博的请求后,第三方应用应该按照请求类型进行处理,处理完后必须通过 [WeiboSDK sendResponse:] 将结果回传给微博
  33. @param request 具体的请求对象
  34. */
  35. - (void)didReceiveWeiboRequest:(WBBaseRequest *)request{ //向微博发送请求
  36. NSLog(@" %@",request.class);
  37. }
  38. /**
  39. 微博分享  与 微博登录,成功与否都会走这个方法。 用户根据自己的业务进行处理。
  40. 收到一个来自微博客户端程序的响应
  41. 收到微博的响应后,第三方应用可以通过响应类型、响应的数据和 WBBaseResponse.userInfo 中的数据完成自己的功能
  42. @param response 具体的响应对象
  43. */
  44. - (void)didReceiveWeiboResponse:(WBBaseResponse *)response{
  45. if ([response isKindOfClass:WBAuthorizeResponse.class])  //用户登录的回调
  46. {
  47. if ([_weiboDelegate respondsToSelector:@selector(weiboLoginByResponse:)]) {
  48. [_weiboDelegate weiboLoginByResponse:response];
  49. }
  50. }
  51. }
  52. @end

调用登录的viewController.m 下面是具体的代码:

 
  1. //
  2. //  ViewController.m
  3. //  weiboSDKDemo
  4. //
  5. //  Created by 张国荣 on 16/6/21.
  6. //  Copyright © 2016年 BateOrganization. All rights reserved.
  7. //
  8. #import "ViewController.h"
  9. #import "WeiboSDK.h"
  10. #import "AppDelegate.h"
  11. #define APP_REDIRECT_URL @"回调地址"
  12. @interface ViewController ()<WeiBoDelegate>
  13. {
  14. AppDelegate *delgate;
  15. }
  16. @end
  17. @implementation ViewController
  18. - (void)viewDidLoad {
  19. [super viewDidLoad];
  20. // Do any additional setup after loading the view, typically from a nib.
  21. }
  22. - (IBAction)weiboLoginAction:(id)sender {
  23. delgate = (AppDelegate *)[UIApplication sharedApplication].delegate;
  24. delgate.weiboDelegate = self;
  25. WBAuthorizeRequest *request = [WBAuthorizeRequest request];
  26. //回调地址与 新浪微博开放平台中 我的应用  --- 应用信息 -----高级应用    -----授权设置 ---应用回调中的url保持一致就好了
  27. request.redirectURI = APP_REDIRECT_URL;
  28. //SCOPE 授权说明参考  http://open.weibo.com/wiki/
  29. request.scope = @"all";
  30. request.userInfo = nil;
  31. [WeiboSDK sendRequest:request];
  32. }
  33. -(void)weiboLoginByResponse:(WBBaseResponse *)response{
  34. NSDictionary *dic = (NSDictionary *) response.requestUserInfo;
  35. NSLog(@"userinfo %@",dic);
  36. }
  37. - (IBAction)weiboShareAction:(id)sender {
  38. }
  39. - (void)didReceiveMemoryWarning {
  40. [super didReceiveMemoryWarning];
  41. // Dispose of any resources that can be recreated.
  42. }
  43. @end

iOS开发之第三方登录微博-- 史上最全最新第三方登录微博方式实现的更多相关文章

  1. iOS开发之第三方登录微信-- 史上最全最新第三方登录微信方式实现

    项目地址 :    https://github.com/zhonggaorong/weixinLoginDemo 最新版本的微信登录实现步骤实现: 1.在进行微信OAuth2.0授权登录接入之前,在 ...

  2. iOS开发之第三方登录QQ -- 史上最全最新第三方登录QQ方式实现

    项目地址 :  https://github.com/zhonggaorong/QQLoginDemo/tree/master 最新版本的qq登录实现步骤实现: 1. 首先,你需要去向腾讯申请账号. ...

  3. 史上最全最新java面试题合集二(附答案)

    下面小编整理了本套java面试题全集,分享给大家,希望对大家的java学习和就业面试有所帮助. 51.类ExampleA继承Exception,类ExampleB继承ExampleA. 有如下代码片断 ...

  4. React Native常用第三方组件汇总--史上最全 之一

    React Native 项目常用第三方组件汇总: react-native-animatable 动画 react-native-carousel 轮播 react-native-countdown ...

  5. React Native常用第三方组件汇总--史上最全[转]

    本文出处: http://blog.csdn.net/chichengjunma/article/details/52920137 React Native 项目常用第三方组件汇总: react-na ...

  6. iOS分类(category),类扩展(extension)—史上最全攻略

    背景: 在大型项目,企业级开发中多人同时维护同一个类,此时程序员A因为某项需求只想给当前类currentClass添加一个方法newMethod,那该怎么办呢? 最简单粗暴的方式是把newMethod ...

  7. 史上最全最新Java面试题合集一(附答案)

    下面小编整理了本套java面试题全集,分享给大家,希望对大家的java学习和就业面试有所帮助. 1.面向对象的特征有哪些方面? 答:面向对象的特征主要有以下几个方面: 抽象:抽象是将一类对象的共同特征 ...

  8. 开源框架】Android之史上最全最简单最有用的第三方开源库收集整理,有助于快速开发

    [原][开源框架]Android之史上最全最简单最有用的第三方开源库收集整理,有助于快速开发,欢迎各位... 时间 2015-01-05 10:08:18 我是程序猿,我为自己代言 原文  http: ...

  9. 了解iOS消息推送一文就够:史上最全iOS Push技术详解

    本文作者:陈裕发, 腾讯系统测试工程师,由腾讯WeTest整理发表. 1.引言 开发iOS系统中的Push推送,通常有以下3种情况: 1)在线Push:比如QQ.微信等IM界面处于前台时,聊天消息和指 ...

随机推荐

  1. CSS Flex

    关于flex 请看这里  https://css-tricks.com/snippets/css/a-guide-to-flexbox/ 太详细啦!!!  还通俗易懂!!! 没啥好说的 不过上面那篇文 ...

  2. SMT贴片红胶基本知识

    SMT贴片红胶是一种聚稀化合物,与锡膏不同的是其受热后便固化,其凝固点温度为150℃,这时,红胶开始由膏状体直接变成固体. SMT贴片机装贴贴片具有粘度流动性,温度特性,润湿特性等.根据红胶的这个特性 ...

  3. Qt保证只有一个实例(将CreateMutex得到的handle通过转换得到值)

    使用CreateMutex 可以实现只启动一个应用程序实例 view plaincopy to clipboardprint?#include <QApplication>#include ...

  4. Sonar入门学习

    最近在学习Sonar,配置了好几天,才搭建起来环境,为自己的学习能力感到汗颜,赶紧在此记录一下,所谓好记性不如烂笔头. 1.Sonar介绍 Sonar是一个用于代码质量管理的开源平台,用于管理Java ...

  5. 漫谈程序猿系列:她发现了一个Bug……

    watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZm9ydW9r/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/d ...

  6. Google Maps 学习笔记(三)

    1.GPolyline折线对象和GPolygon多边形对象 html标签中必须包含v="urn:schemas-microsoft--com:vml"的命名空间 <html ...

  7. 【LINUX】SHELL syntax error:unexpected end of file

    解决思路: DOS下文件和Linux下文件格式差异问题导致的. DOS下的文本文件是以\r\n作为断行标志的,表示成十六进制就是0D 0A.而Unix下的文本文件是以\n作为断行标志的,表示成十六进制 ...

  8. window 7 改变窗口颜色

    对于刚刚重新安装的window7系统的盆友来说,不能改变窗口的颜色,和别人的window7窗口颜色和样子不一样和不好玩,那么我教大家,如何更改窗口颜色. 首先,重装的系统用软件激活之后,肯定还没还得急 ...

  9. BZOJ 1296: [SCOI2009]粉刷匠( dp )

    dp[ i ][ j ] = max( dp[ i - 1 ][ k ] + w[ i ][ j - k ] )  ( 0 <= k <= j ) 表示前 i 行用了 j 次粉刷的机会能正 ...

  10. BZOJ 1266: [AHOI2006]上学路线route(最短路+最小割)

    第一问最短路.第二问,先把最短路的图建出来(边(u,v)满足d[s->u]+d[v->t]+d(u,v)==最短路径长度,就在图中,可以从源点和汇点分别跑一次最短路得到每个点到源点和汇点的 ...