使用微博作为第三方登陆 微博分享
2016-05-17 17:16
323 查看
#import
"AppDelegate.h"
#import "WeiboSDK.h"
@interface
AppDelegate ()<WeiboSDKDelegate>
@end
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary
*)launchOptions {
//设置SDK的调试模式,观察微博SDK日志
[WeiboSDK
enableDebugMode:YES];
//注册APPKey;
[WeiboSDK
registerApp:kAppKey];
return
YES;
}
-(BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString
*,id> *)options
{
return [WeiboSDK
handleOpenURL:url delegate:self];
}
-(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];
}
#pragma mark 协议方法
-(void)didReceiveWeiboRequest:(WBBaseRequest *)request
{
NSLog(@"接收到请求");
}
- (void)didReceiveWeiboResponse:(WBBaseResponse *)response
{
if ([response
isKindOfClass:WBSendMessageToWeiboResponse.class])
{
NSString *title =
NSLocalizedString(@"发送结果",
nil);
NSString *message = [NSString
stringWithFormat:@"%@: %d\n%@: %@\n%@: %@",
NSLocalizedString(@"响应状态",
nil), (int)response.statusCode,
NSLocalizedString(@"响应UserInfo数据",
nil), response.userInfo,
NSLocalizedString(@"原请求UserInfo数据",
nil),response.requestUserInfo];
WBSendMessageToWeiboResponse* sendMessageToWeiboResponse = (WBSendMessageToWeiboResponse*)response;
NSString* accessToken = [sendMessageToWeiboResponse.authResponse
accessToken];
if (accessToken)
{
// self.wbtoken = accessToken;
}
NSString* userID = [sendMessageToWeiboResponse.authResponse
userID];
if (userID) {
// self.wbCurrentUserID = userID;
}
}
else
if ([response
isKindOfClass:WBAuthorizeResponse.class])
{
NSLog(@"%ld",response.statusCode);
NSLog(@"用户信息:%@",response.userInfo);
NSLog(@"请求时候信息%@",response.requestUserInfo);
//保存登陆成功后的用户信息
[[NSUserDefaults
standardUserDefaults]setObject:response.userInfo
forKey:@"WeiboUserInfo"];
/*
WeiboSDKResponseStatusCodeSuccess = 0,//成功
WeiboSDKResponseStatusCodeUserCancel = -1,//用户取消发送
WeiboSDKResponseStatusCodeSentFail = -2,//发送失败
WeiboSDKResponseStatusCodeAuthDeny = -3,//授权失败
WeiboSDKResponseStatusCodeUserCancelInstall = -4,//用户取消安装微博客户端
*/
}
else
if ([response
isKindOfClass:WBPaymentResponse.class])
{
NSString *title =
NSLocalizedString(@"支付结果",
nil);
NSString *message = [NSString
stringWithFormat:@"%@: %d\nresponse.payStatusCode: %@\nresponse.payStatusMessage: %@\n%@: %@\n%@: %@",
NSLocalizedString(@"响应状态",
nil), (int)response.statusCode,[(WBPaymentResponse
*)response payStatusCode], [(WBPaymentResponse *)response
payStatusMessage],
NSLocalizedString(@"响应UserInfo数据",
nil),response.userInfo,
NSLocalizedString(@"原请求UserInfo数据",
nil), response.requestUserInfo];
}
else
if([response
isKindOfClass:WBSDKAppRecommendResponse.class])
{
NSString *title =
NSLocalizedString(@"邀请结果",
nil);
NSString *message = [NSString
stringWithFormat:@"accesstoken:\n%@\nresponse.StatusCode: %d\n响应UserInfo数据:%@\n原请求UserInfo数据:%@",[(WBSDKAppRecommendResponse
*)response accessToken],(int)response.statusCode,response.userInfo,response.requestUserInfo];
}else
if([response
isKindOfClass:WBShareMessageToContactResponse.class])
{
NSString *title =
NSLocalizedString(@"发送结果",
nil);
NSString *message = [NSString
stringWithFormat:@"%@: %d\n%@: %@\n%@: %@",
NSLocalizedString(@"响应状态",
nil), (int)response.statusCode,
NSLocalizedString(@"响应UserInfo数据",
nil), response.userInfo,
NSLocalizedString(@"原请求UserInfo数据",
nil),response.requestUserInfo];
WBShareMessageToContactResponse* shareMessageToContactResponse = (WBShareMessageToContactResponse*)response;
NSString* accessToken = [shareMessageToContactResponse.authResponse
accessToken];
if (accessToken)
{
// self.wbtoken = accessToken;
}
NSString* userID = [shareMessageToContactResponse.authResponse
userID];
if (userID) {
// self.wbCurrentUserID = userID;
}
}
}
在分享界面设置按钮实现分享和第三方登陆
![](http://img.blog.csdn.net/20160517172346765?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
#import "ViewController.h"
#import "WeiboSDK.h"
@interface
ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super
viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}
- (IBAction)weiboAuth:(id)sender {
WBAuthorizeRequest * request=[WBAuthorizeRequest
request];
//授权网页回调URL和后台保持一致
request.redirectURI=kCallBackURL;
request.scope=@"all";
request.userInfo=@{@"what":@"yes"};
//发送请求
[WeiboSDK
sendRequest:request];
}
- (IBAction)shareText:(id)sender {
WBAuthorizeRequest *authRequest = [WBAuthorizeRequest
request];
authRequest.redirectURI =
kCallBackURL;
authRequest.scope =
@"all";
WBMessageObject *message = [WBMessageObject
message];
message.text=@"需要分享的文本";
NSDictionary * dic=[[NSUserDefaults
standardUserDefaults]objectForKey:@"WeiboUserInfo"];
WBSendMessageToWeiboRequest *request = [WBSendMessageToWeiboRequest
requestWithMessage:message
authInfo:authRequest
access_token:dic[@"access_token"]];
request.userInfo =
@{@"ShareMessageFrom":
@"SendMessageToWeiboViewController",
@"Other_Info_1": [NSNumber
numberWithInt:123],
@"Other_Info_2": @[@"obj1",
@"obj2"],
@"Other_Info_3":
@{@"key1":
@"obj1", @"key2":
@"obj2"}};
[WeiboSDK
sendRequest:request];
}
"AppDelegate.h"
#import "WeiboSDK.h"
@interface
AppDelegate ()<WeiboSDKDelegate>
@end
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary
*)launchOptions {
//设置SDK的调试模式,观察微博SDK日志
[WeiboSDK
enableDebugMode:YES];
//注册APPKey;
[WeiboSDK
registerApp:kAppKey];
return
YES;
}
-(BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString
*,id> *)options
{
return [WeiboSDK
handleOpenURL:url delegate:self];
}
-(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];
}
#pragma mark 协议方法
-(void)didReceiveWeiboRequest:(WBBaseRequest *)request
{
NSLog(@"接收到请求");
}
- (void)didReceiveWeiboResponse:(WBBaseResponse *)response
{
if ([response
isKindOfClass:WBSendMessageToWeiboResponse.class])
{
NSString *title =
NSLocalizedString(@"发送结果",
nil);
NSString *message = [NSString
stringWithFormat:@"%@: %d\n%@: %@\n%@: %@",
NSLocalizedString(@"响应状态",
nil), (int)response.statusCode,
NSLocalizedString(@"响应UserInfo数据",
nil), response.userInfo,
NSLocalizedString(@"原请求UserInfo数据",
nil),response.requestUserInfo];
WBSendMessageToWeiboResponse* sendMessageToWeiboResponse = (WBSendMessageToWeiboResponse*)response;
NSString* accessToken = [sendMessageToWeiboResponse.authResponse
accessToken];
if (accessToken)
{
// self.wbtoken = accessToken;
}
NSString* userID = [sendMessageToWeiboResponse.authResponse
userID];
if (userID) {
// self.wbCurrentUserID = userID;
}
}
else
if ([response
isKindOfClass:WBAuthorizeResponse.class])
{
NSLog(@"%ld",response.statusCode);
NSLog(@"用户信息:%@",response.userInfo);
NSLog(@"请求时候信息%@",response.requestUserInfo);
//保存登陆成功后的用户信息
[[NSUserDefaults
standardUserDefaults]setObject:response.userInfo
forKey:@"WeiboUserInfo"];
/*
WeiboSDKResponseStatusCodeSuccess = 0,//成功
WeiboSDKResponseStatusCodeUserCancel = -1,//用户取消发送
WeiboSDKResponseStatusCodeSentFail = -2,//发送失败
WeiboSDKResponseStatusCodeAuthDeny = -3,//授权失败
WeiboSDKResponseStatusCodeUserCancelInstall = -4,//用户取消安装微博客户端
*/
}
else
if ([response
isKindOfClass:WBPaymentResponse.class])
{
NSString *title =
NSLocalizedString(@"支付结果",
nil);
NSString *message = [NSString
stringWithFormat:@"%@: %d\nresponse.payStatusCode: %@\nresponse.payStatusMessage: %@\n%@: %@\n%@: %@",
NSLocalizedString(@"响应状态",
nil), (int)response.statusCode,[(WBPaymentResponse
*)response payStatusCode], [(WBPaymentResponse *)response
payStatusMessage],
NSLocalizedString(@"响应UserInfo数据",
nil),response.userInfo,
NSLocalizedString(@"原请求UserInfo数据",
nil), response.requestUserInfo];
}
else
if([response
isKindOfClass:WBSDKAppRecommendResponse.class])
{
NSString *title =
NSLocalizedString(@"邀请结果",
nil);
NSString *message = [NSString
stringWithFormat:@"accesstoken:\n%@\nresponse.StatusCode: %d\n响应UserInfo数据:%@\n原请求UserInfo数据:%@",[(WBSDKAppRecommendResponse
*)response accessToken],(int)response.statusCode,response.userInfo,response.requestUserInfo];
}else
if([response
isKindOfClass:WBShareMessageToContactResponse.class])
{
NSString *title =
NSLocalizedString(@"发送结果",
nil);
NSString *message = [NSString
stringWithFormat:@"%@: %d\n%@: %@\n%@: %@",
NSLocalizedString(@"响应状态",
nil), (int)response.statusCode,
NSLocalizedString(@"响应UserInfo数据",
nil), response.userInfo,
NSLocalizedString(@"原请求UserInfo数据",
nil),response.requestUserInfo];
WBShareMessageToContactResponse* shareMessageToContactResponse = (WBShareMessageToContactResponse*)response;
NSString* accessToken = [shareMessageToContactResponse.authResponse
accessToken];
if (accessToken)
{
// self.wbtoken = accessToken;
}
NSString* userID = [shareMessageToContactResponse.authResponse
userID];
if (userID) {
// self.wbCurrentUserID = userID;
}
}
}
在分享界面设置按钮实现分享和第三方登陆
#import "ViewController.h"
#import "WeiboSDK.h"
@interface
ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super
viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}
- (IBAction)weiboAuth:(id)sender {
WBAuthorizeRequest * request=[WBAuthorizeRequest
request];
//授权网页回调URL和后台保持一致
request.redirectURI=kCallBackURL;
request.scope=@"all";
request.userInfo=@{@"what":@"yes"};
//发送请求
[WeiboSDK
sendRequest:request];
}
- (IBAction)shareText:(id)sender {
WBAuthorizeRequest *authRequest = [WBAuthorizeRequest
request];
authRequest.redirectURI =
kCallBackURL;
authRequest.scope =
@"all";
WBMessageObject *message = [WBMessageObject
message];
message.text=@"需要分享的文本";
NSDictionary * dic=[[NSUserDefaults
standardUserDefaults]objectForKey:@"WeiboUserInfo"];
WBSendMessageToWeiboRequest *request = [WBSendMessageToWeiboRequest
requestWithMessage:message
authInfo:authRequest
access_token:dic[@"access_token"]];
request.userInfo =
@{@"ShareMessageFrom":
@"SendMessageToWeiboViewController",
@"Other_Info_1": [NSNumber
numberWithInt:123],
@"Other_Info_2": @[@"obj1",
@"obj2"],
@"Other_Info_3":
@{@"key1":
@"obj1", @"key2":
@"obj2"}};
[WeiboSDK
sendRequest:request];
}
相关文章推荐
- 欢迎使用CSDN-markdown编辑器
- Linux下C编程
- C语言高级知识点滴
- shell脚本判断变量是否是数字的方法
- 关于寄存器ESP和EBP的一些理解
- jmeter正则表达式
- HDU1003 动态规划,最大子序列之和
- Nginx日志配置及配置调试
- python将py文件转换为pyc
- Three.js讲解以及WEBGL实例(转)
- 编程小练习
- 四大域对象
- Mac搭建nginx+rtmp服务器
- 剔除相关数
- Mac搭建nginx+rtmp服务器
- ex2_1graphical solution
- 体感开发学习总结
- 关于多线程的疑问
- 工厂模式
- unity3D中 局部坐标,世界坐标以及屏幕坐标,transform变换坐标以及 变换方向心得