相关资源地址:

本项目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目录结构预览:

    

Android 微博SDK分享接入 微博登录sdk_2d

     

 

3. 把SDK集成到工程。

    1.  通过pod 集成。

[objc] view plain copy


1. pod "WeiboSDK"


    2. 手动导入sdk

         1.  把上面预览图上面的文件,全部拖入工程中。

Android 微博SDK分享接入 微博登录sdk_#import_02

 2.   Other Linker Flags  增加 -all_load.  (一定要把官方说的 -Objc 换成 -all_load) 好大一个坑。

  

Android 微博SDK分享接入 微博登录sdk_ide_03

      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

Android 微博SDK分享接入 微博登录sdk_2d_04

4. 编译工程。应该编译成功。

 

 5. 针对iOS9的相关问题。

            1. 你需要用到微博的相关功能,如登陆,分享等。并且需要实现跳转到微博的功能,在iOS9系统中就需要在你的app的plist中添加下列键值对。否则在canOpenURL函数执行时,就会返回NO。了解详情请至https://developer.apple.com/videos/wwdc/2015/?id=703

[objc] view plain copy


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

Android 微博SDK分享接入 微博登录sdk_ide_05

   

     2. 增加url Types。

Android 微博SDK分享接入 微博登录sdk_#import_06

 

 

注意:  bundle ideatefier 一定要与 微博开发者后台要一致,不然会出现调试不成功,有以下错误出现。

[objc] view plain copy


1. Flag Status: -R ------- networkStatusForFlags  
2. 2016-06-2118:31.556 weiboSDKDemo[906:299845] -canOpenURL: failed for"weibosdk://" -"(null)"  
3. 2016-06-2118:31.720 weiboSDKDemo[906:299845] Reachability Flag Status: -R ------- networkStatusForFlags  
4. 2016-06-2118:33.350 weiboSDKDemo[906:299845] -[AppDelegate0x12d615090  
5. 2016-06-2118:33.351 weiboSDKDemo[906:299845] *** Terminating app due to uncaught exception 'NSInvalidArgumentException','-[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. 重写系统方法

[objc] view plain copy

1. application:(UIApplication *)appNSURL *)urlNSString *,id> *)options{}

具体代码如下:

 

[objc] view plain copy

1. //  
2. //  AppDelegate.h  
3. //  weiboSDKDemo  
4. //  
5. //  Created by 张国荣 on 16/6/21.  
6. //  Copyright © 2016年 BateOrganization. All rights reserved.  
7. //  
8.   
9. #import <UIKit/UIKit.h>  
10. #import "WeiboSDK.h"  
11. @protocol WeiBoDelegate <NSObject>  
12.   
13. //登录的代理  
14. -(void)weiboLoginByResponse:(WBBaseResponse *)response;  
15. //分享的大力  
16. -(void)weiboShareSuccessCode:(NSInteger)shareResultCode;  
17. @end  
18.   
19. @interface AppDelegate : UIResponder <UIApplicationDelegate>  
20.   
21. @property (strong, nonatomic) UIWindow *window;  
22. @property (weak  , nonatomic) id<WeiBoDelegate> weiboDelegate;  
23.   
24. @end



[objc] view plain copy

    1. //  
    2. //  AppDelegate.m  
    3. //  weiboSDKDemo  
    4. //  
    5. //  Created by 张国荣 on 16/6/21.  
    6. //  Copyright © 2016年 BateOrganization. All rights reserved.  
    7. //  
    8.   
    9. #import "AppDelegate.h"  
    10. //申请下来的appkey  
    11. #define APP_KEY @"app key"  
    12.   
    13. @interface AppDelegate ()<WeiboSDKDelegate>  
    14.   
    15. @end  
    16.   
    17. @implementation AppDelegate  
    18.   
    19.   
    20. - (BOOL)application:(UIApplication *)applicationNSDictionary *)launchOptions {  
    21. // Override point for customization after application launch.  
    22.       
    23.  registerApp:APP_KEY];  
    24. return YES;  
    25. }  
    26.   
    27.   
    28. // 9.0 后才生效  
    29. -(BOOL)application:(UIApplication *)appNSURL *)urlNSString *,id> *)options{  
    30.   
    31. return [WeiboSDKself];  
    32. }  
    33.   
    34.   
    35. #pragma mark 9.0之前  
    36. - (BOOL)application:(UIApplication *)applicationNSURL *)url{  
    37. return [WeiboSDKself];  
    38. }  
    39. - (BOOL)application:(UIApplication *)applicationNSURL *)urlNSString *)sourceApplicationid)annotation{  
    40. return [WeiboSDKself];  
    41. }  
    42.   
    43.   
    44. /** 
    45.  收到一个来自微博客户端程序的请求 
    46.   
    47.  收到微博的请求后,第三方应用应该按照请求类型进行处理,处理完后必须通过 [WeiboSDK sendResponse:] 将结果回传给微博 
    48.  @param request 具体的请求对象 
    49.  */  
    50. - (void)didReceiveWeiboRequest:(WBBaseRequest *)request{ //向微博发送请求  
    51.       
    52. @" %@",request.class);  
    53. }  
    54.   
    55. /** 
    56.   
    57.  微博分享  与 微博登录,成功与否都会走这个方法。 用户根据自己的业务进行处理。 
    58.  收到一个来自微博客户端程序的响应 
    59.   
    60.  收到微博的响应后,第三方应用可以通过响应类型、响应的数据和 WBBaseResponse.userInfo 中的数据完成自己的功能 
    61.  @param response 具体的响应对象 
    62.  */  
    63. - (void)didReceiveWeiboResponse:(WBBaseResponse *)response{  
    64. if ([response.class])  //用户登录的回调  
    65.     {  
    66.       
    67. if ([_weiboDelegate@selector(weiboLoginByResponse:)]) {  
    68.  weiboLoginByResponse:response];  
    69.         }  
    70.     }  
    71. }  
    72.   
    73. @end

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

     

    [objc] view plain copy

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