相关资源地址:
本项目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 集成。
[objc] view plain copy
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
[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>
2. 增加url Types。
注意: 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