iOS-微博的登录和分享

微博登录与分享
微博开放平台-根据用户ID获取用户信息
注意:在Building Setting 中,other Linker Flags 添加-all_load
1、首先导入微博的SDK

iOS-微博的登录和分享_第1张图片

2、导入需要的framework

 QuartzCore.framework 
  ImageIO.framework 
  SystemConfiguration.framework 
  Security.framework
  CoreTelephony.framework 
  CoreText.framework  
  UIKit.framework 
  Foundation.framework 
  CoreGraphics.framework 
  libz.dylib  
  libsqlite3.dylib

3、添加URL Type


iOS-微博的登录和分享_第2张图片
添加URL Type

4、在plist文件里添加iOS9 URL Schemes 白名单

LSApplicationQueriesSchemes
    
        wechat
        weixin
        sinaweibohd
        sinaweibo
        sinaweibosso
        weibosdk
        weibosdk2.5
        mqqapi
        mqq
        mqqOpensdkSSoLogin
        mqqconnect
        mqqopensdkdataline
        mqqopensdkgrouptribeshare
        mqqopensdkfriend
        mqqopensdkapi
        mqqopensdkapiV2
        mqqopensdkapiV3
        mqzoneopensdk
        wtloginmqq
        wtloginmqq2
        mqqwpa
        mqzone
        mqzonev2
        mqzoneshare
        wtloginqzone
        mqzonewx
        mqzoneopensdkapiV2
        mqzoneopensdkapi19
        mqzoneopensdkapi
        mqzoneopensdk
        alipay
        alipayshare
    

注:在工程中引入静态库以后,需要在编译时添加-ObjC编译选项


iOS-微博的登录和分享_第3张图片
-ObjC

5、注册第三方应用,并在第三方应用实现从微博返回
在AppDelegate.m中引入#import "WeiboSDK.h"头文件,
遵循WeiboSDKDelegate代理
然后写入如下:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

   [WeiboSDK enableDebugMode:YES];
    [WeiboSDK registerApp:WBAppKey];
    return YES;
}
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary *)options
{
    [WeiboSDK handleOpenURL:url delegate:self];
    return YES;
}
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url
{
    [WeiboSDK handleOpenURL:url delegate:self];
    return YES;
}

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
   [WeiboSDK handleOpenURL:url delegate:self];
    return YES;
}

#pragma mark - WeiboSDKDelegate
- (void)didReceiveWeiboRequest:(WBBaseRequest *)request
{
    NSLog(@"============didReceiveWeiboRequest================");
}
- (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];
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:title
                                                        message:message
                                                       delegate:nil
                                              cancelButtonTitle:NSLocalizedString(@"确定", nil)
                                              otherButtonTitles:nil];
        [alert show];
    }
    else if ([response isKindOfClass:WBAuthorizeResponse.class])
    {
        NSLog(@"\n=====================\n%@\n==================\n", message);
        /*{
         "access_token" = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
         app =     {
         logo = "http://timg.sjs.sinajs.cn/xxxxxxxxx/xxxxxxxxx/developer/xxxxxxxx.gif";
         name = "\U672a\U901a\Uxxxxxxxxxxx8";
         };
         "expires_in" = 157679999;
         "refresh_token" = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
         "remind_in" = xxxxxxxxxxxxxxxxxx;
         scope = "follow_app_official_microblog";
         uid = xxxxxxxxxxxxxxxx;
         }
        [[NSUserDefaults standardUserDefaults] setObject:response.userInfo forKey:WBResponse_UserInfo];
        //https://api.weibo.com/2/users/show.json?access_token=2.00wc8p2DNByEXB869738f574Vc7tSE&uid=3070962482
        if (response.userInfo != nil) {

//登录成功发送通知
            [[NSNotificationCenter defaultCenter] postNotificationName:@"notificationLogin" object:nil];
        }
    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];
    }
}

6、微博分享—>在控制器里面添加分享代码

 #import “WeiboSDK.h"
- (void)sendMessageToWeiBo
{
    WBAuthorizeRequest *authRequest = [WBAuthorizeRequest request];
    authRequest.redirectURI = WBRedirectURL;
    authRequest.scope = @"all";
    
    WBSendMessageToWeiboRequest *request = [WBSendMessageToWeiboRequest requestWithMessage:[self messageToShare] authInfo:authRequest access_token:nil];
    request.userInfo = @{@"ShareMessageFrom": @"ViewController",
                         @"Other_Info_1": [NSNumber numberWithInt:123],
                         @"Other_Info_2": @[@"obj1", @"obj2"],
                         @"Other_Info_3": @{@"key1": @"obj1", @"key2": @"obj2"}};
    //    request.shouldOpenWeiboAppInstallPageIfNotInstalled = NO;
    [WeiboSDK sendRequest:request];
}
- (WBMessageObject *)messageToShare
{
    //分享文字和图片   多媒体文件和图片不能同时分享
    WBMessageObject *message = [WBMessageObject message];
    //
    //    message.text = NSLocalizedString(@"www.baidu.com", nil);
    //    WBImageObject *image = [WBImageObject object];
    //    image.imageData = [NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"123456" ofType:@"jpg"]];
    //    message.imageObject = image;

    //分享多媒体文件
    WBWebpageObject *webpage = [WBWebpageObject object];
    webpage.objectID = @"identifier1";
    webpage.title = NSLocalizedString(@"分享网页标题", nil);
    webpage.description = [NSString stringWithFormat:NSLocalizedString(@"分享网页内容简介-%.0f", nil), [[NSDate date] timeIntervalSince1970]];
    webpage.thumbnailData = [NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"Icon" ofType:@"png"]];
    webpage.webpageUrl = @"http://www.baidu.com";
    message.mediaObject = webpage;
    return message;
}

7、微博登录—>控制器里面添加代码

#import “WeiboSDK.h"
//微博登录
- (void)onClickWBLoginBtn
{
    WBAuthorizeRequest *request = [WBAuthorizeRequest request];
    request.redirectURI = @"https://api.weibo.com/oauth2/default.html";
    request.scope = @"all";
    request.userInfo = @{@"SSO_From": @"ViewController",
                         @"Other_Info_1": [NSNumber numberWithInt:123],
                         @"Other_Info_2": @[@"obj1", @"obj2"],
                         @"Other_Info_3": @{@"key1": @"obj1", @"key2": @"obj2"}};
    [WeiboSDK sendRequest:request];
}
//登录成功之后的回调
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(WBLogin:) name:WBLoginSuccess object:nil];
- (void)WBLogin:(NSNotification *)notifi
{
    NSDictionary *dict = [[NSUserDefaults standardUserDefaults] objectForKey:WBResponse_UserInfo];
    NSLog(@"----->>>\n%@\n<-------",dict);

    AFHTTPRequestOperationManager *manage = [AFHTTPRequestOperationManager manager];
    manage.responseSerializer = [AFHTTPResponseSerializer serializer];
    [manage GET:WeiBoAuthoUrl parameters:@{@"access_token":dict[@"access_token"], @"uid":dict[@"uid"]} success:^(AFHTTPRequestOperation *operation, id responseObject) {
//获取用户信息
        NSDictionary *dictionary = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingAllowFragments error:nil];
        NSLog(@"usershow-->/n%@", dictionary);
        
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        NSLog(@"error-->%@",error.localizedDescription);
    }];
}

你可能感兴趣的:(iOS-微博的登录和分享)