0. 使用xcode创建一个项目 ThirdLogin_weibo
1. 打开新浪微博的开发者平台, 添加一个应用 "迷途SKY"(随便写)
1)配置应用的基本信息:
>Bundle ID 一定要与 ThirdLogin_weibo 的Bundle identifier 一致, 否则会有bug
>在高级信息中添加授权回调页url: https://api.weibo.com/oauth2/default.html 参考文档建议填写的url
> 其他的参数可以随便填
2. 选择 "文档" -> "移动应用" -> "移动应用SSO授权" 下载SDK
3. 项目中导入"libWeiboSDK"文件 参考开发文档
> 配置: 选择 "BuildSetting" -> 搜索"Other Linker Flags" 添加 "-ObjC"
> 添加框架依赖:CoreGraphics.framework CoreText.framework CoreTelephony.framework Security.framework
SystemConfiguration.framework ImageIO.framework QuartzCore.framework libz.tbd
libsqlite3.tbd 参考SDK文档
> 配置URL Scheme: 在info.plist 添加URL types URL Schemes=wb1883208243(wb+appkey) URL identifier=com.weibo
> info.plist中 配置一下 xcode7开始的网络请求安全机制
4.代码示例
>在appDelegate中导入 "WeiboSDK.h"
>在appDelegate的 didFinishLaunchingWithOptions 方法中 打开微博sdk的调试功能和注册appkey
[WeiboSDK enableDebugMode:YES];
[WeiboSDK registerApp:kAppKey]; // kAppKey 添加微博应用获取的appkey
>在appDelegate 添加下面两个方法:
- (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 ]; }
> 在appDelegate 添加获取授权结果的代理方法
/** 收到一个来自微博客户端程序的响应 收到微博的响应后,第三方应用可以通过响应类型、响应的数据和 WBBaseResponse.userInfo 中的数据完成自己的功能 @param response 具体的响应对象 */ - (void)didReceiveWeiboResponse:(WBBaseResponse *)response{ // 是授权响应 if ([response isKindOfClass:[WBAuthorizeResponse class]]) { WBAuthorizeResponse *wbRes = (WBAuthorizeResponse *)response; NSLog(@"%@, %@, %@, %@", wbRes.userID, wbRes.accessToken, wbRes.expirationDate, wbRes.refreshToken); // 获取到 accessToke 发送请求到微博的 获取用户的 信息
} } - (void)didReceiveWeiboRequest:(WBBaseRequest *)request{ }
在ViewController 中添加一个 登陆按钮 发送登陆请求 获取授权 accessToke
#define kRedirectURI @"https://api.weibo.com/oauth2/default.html" // 微博回调页 #import "ViewController.h" #import "WeiboSDK.h" @interface ViewController () @end @implementation ViewController - (IBAction)loginClick:(id)sender { WBAuthorizeRequest *request = [WBAuthorizeRequest request]; request.redirectURI = kRedirectURI; request.scope = @"all"; // userinfo 字段可以不写, 当获取到授权信息是可以在代理方法中获取 userinfo和accessToken等信息 可以用于校验 request.userInfo = @{@"SSO_From": @"SendMessageToWeiboViewController", @"Other_Info_1": [NSNumber numberWithInt:123], @"Other_Info_2": @[@"obj1", @"obj2"], @"Other_Info_3": @{@"key1": @"obj1", @"key2": @"obj2"}}; [WeiboSDK sendRequest:request]; } @end