本文共 8627 字,大约阅读时间需要 28 分钟。
(1)官方下载ShareSDK 2.8.8,地址:http://sharesdk.cn/
http://blog.csdn.net/daleiwang/article/details/34081231/
(2)根据实际情况,引入相关的库,参考。
(3)在项目的AppDelegate中一般情况下有三个操作,第一是注册ShareSDK,第二是注册各个平台的账号,第三是关于等应用的回调处理。
-
-
-
-
-
-
-
-
- #import "AppDelegate.h"
- #import "RootViewController.h"
- #import <ShareSDK/ShareSDK.h>
- #import "WeiboApi.h"
- #import <TencentOpenAPI/QQApiInterface.h>
- #import <TencentOpenAPI/TencentOAuth.h>
- #import "WXApi.h"
- #import <TencentOpenAPI/QQApiInterface.h>
- #import <TencentOpenAPI/TencentOAuth.h>
-
- @implementation AppDelegate
- @synthesize rootVC;
-
- - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
- self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
- if (self.rootVC==nil) {
- self.rootVC = [[RootViewController alloc]initWithNibName:@"RootViewController" bundle:nil];
- }
- UINavigationController *rootNav = [[UINavigationController alloc]initWithRootViewController:self.rootVC];
- self.window.rootViewController = rootNav;
- self.window.backgroundColor = [UIColor whiteColor];
- [self.window makeKeyAndVisible];
-
-
- <span style="color:#ff0000;">[ShareSDK registerApp:@"1a2e7ab5fb6c"];</span>
-
- <span style="color:#3366ff;">
- [ShareSDK connectSinaWeiboWithAppKey:@"3201194191"
- appSecret:@"0334252914651e8f76bad63337b3b78f"
- redirectUri:@"http://appgo.cn"];
-
-
- [ShareSDK connectTencentWeiboWithAppKey:@"801307650"
- appSecret:@"ae36f4ee3946e1cbb98d6965b0b2ff5c"
- redirectUri:@"http://www.sharesdk.cn"
- wbApiCls:[WeiboApi class]];
-
-
- [ShareSDK connectQZoneWithAppKey:@"100371282"
- appSecret:@"aed9b0303e3ed1e27bae87c33761161d"
- qqApiInterfaceCls:[QQApiInterface class]
- tencentOAuthCls:[TencentOAuth class]];
-
-
- [ShareSDK connectWeChatWithAppId:@"wx4868b35061f87885" wechatCls:[WXApi class]];
-
-
- [ShareSDK connectQQWithQZoneAppKey:@"100371282"
- qqApiInterfaceCls:[QQApiInterface class]
- tencentOAuthCls:[TencentOAuth class]];</span>
-
- return YES;
- }
-
-
- - (void)applicationWillResignActive:(UIApplication *)application {
-
-
- }
-
- - (void)applicationDidEnterBackground:(UIApplication *)application {
-
-
- }
-
- - (void)applicationWillEnterForeground:(UIApplication *)application {
-
- }
-
- - (void)applicationDidBecomeActive:(UIApplication *)application {
-
- }
-
- - (void)applicationWillTerminate:(UIApplication *)application {
-
- }
-
-
- <span style="color:#ff6600;">#pragma mark - WX回调
-
- - (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
- return [ShareSDK handleOpenURL:url wxDelegate:self];
- }
-
- - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
- return [ShareSDK handleOpenURL:url sourceApplication:sourceApplication annotation:annotation wxDelegate:self];
- }
-
- #pragma mark - WXApiDelegate
-
-
-
-
-
-
-
- -(void) onReq:(BaseReq*)req{
-
- }
-
-
-
-
-
-
-
- -(void) onResp:(BaseResp*)resp{
-
- }
- </span>
- @end
(4)信息分享。
- -(IBAction)share:(id)sender{
- NSString *imagePath = [[NSBundle mainBundle] pathForResource:@"card" ofType:@"png"];
-
- id<ISSContent> publishContent = [ShareSDK content:@"分享内容测试"
- defaultContent:@"默认分享内容测试,没内容时显示"
- image:[ShareSDK imageWithPath:imagePath]
- title:@"pmmq"
- url:@"http://www.sharesdk.cn"
- description:@"这是一条测试信息"
- mediaType:SSPublishContentMediaTypeNews];
- [ShareSDK showShareActionSheet:nil
- shareList:nil
- content:publishContent
- statusBarTips:YES
- authOptions:nil
- shareOptions: nil
- result:^(ShareType type, SSResponseState state, id<ISSPlatformShareInfo> statusInfo, id<ICMErrorInfo> error, BOOL end) {
- if (state == SSResponseStateSuccess)
- {
- NSLog(@"分享成功");
- }
- else if (state == SSResponseStateFail)
- {
- NSLog(@"分享失败");
- }
- }];
- }
(5)登录、登出、获取授权信息、关注制定微博
-
-
-
-
-
-
-
-
- #import "LoginViewController.h"
- #import <ShareSDK/ShareSDK.h>
-
- @interface LoginViewController ()
-
- -(IBAction)loginWithSina:(id)sender;
-
- -(IBAction)loginWithQQ:(id)sender;
-
- -(IBAction)loginoutWithSina:(id)sender;
-
- -(IBAction)loginoutWithQQ:(id)sender;
-
- -(IBAction)guanzhuUs:(id)sender;
-
- -(void)reloadStateWithType:(ShareType)type;
-
- @end
-
- @implementation LoginViewController
-
- - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
- self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
- if (self) {
- }
- return self;
- }
-
- - (void)viewDidLoad {
- [super viewDidLoad];
- }
-
- - (void)didReceiveMemoryWarning {
- [super didReceiveMemoryWarning];
- }
-
- - (IBAction)loginWithSina:(id)sender {
- [ShareSDK getUserInfoWithType:ShareTypeSinaWeibo authOptions:nil result:^(BOOL result, id<ISSPlatformUser> userInfo, id<ICMErrorInfo> error) {
- NSLog(@"%d",result);
- if (result) {
-
-
- [self reloadStateWithType:ShareTypeSinaWeibo];
- }
- }];
- }
-
-
- -(IBAction)loginWithQQ:(id)sender{
- [ShareSDK getUserInfoWithType:ShareTypeQQSpace authOptions:nil result:^(BOOL result, id<ISSPlatformUser> userInfo, id<ICMErrorInfo> error) {
- NSLog(@"%d",result);
- if (result) {
-
-
- [self reloadStateWithType:ShareTypeQQSpace];
- }
- }];
- }
-
- -(IBAction)loginoutWithSina:(id)sender{
- [ShareSDK cancelAuthWithType:ShareTypeSinaWeibo];
- [self reloadStateWithType:ShareTypeSinaWeibo];
- }
-
- -(IBAction)loginoutWithQQ:(id)sender{
- [ShareSDK cancelAuthWithType:ShareTypeQQSpace];
- [self reloadStateWithType:ShareTypeQQSpace];
- }
-
- -(void)reloadStateWithType:(ShareType)type{
-
-
- id<ISSPlatformCredential> credential = [ShareSDK getCredentialWithType:type];
- UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"TEXT_TIPS", @"提示")
- message:[NSString stringWithFormat:
- @"uid = %@\ntoken = %@\nsecret = %@\n expired = %@\nextInfo = %@",
- [credential uid],
- [credential token],
- [credential secret],
- [credential expired],
- [credential extInfo]]
- delegate:nil
- cancelButtonTitle:NSLocalizedString(@"TEXT_KNOW", @"知道了")
- otherButtonTitles:nil];
- [alertView show];
- }
-
-
- -(IBAction)guanzhuUs:(id)sender{
- [ShareSDK followUserWithType:ShareTypeSinaWeibo
- field:@"ShareSDK"
- fieldType:SSUserFieldTypeName
- authOptions:nil
- viewDelegate:nil
- result:^(SSResponseState state, id<ISSPlatformUser> userInfo, id<ICMErrorInfo> error) {
- if (state == SSResponseStateSuccess) {
- NSLog(@"关注成功");
- } else if (state == SSResponseStateFail) {
- NSLog(@"%@", [NSString stringWithFormat:@"关注失败:%@", error.errorDescription]);
- }
- }];
- }
-
-
- @end
(5)你可能会看到一些应用需要第三方登录的,一种是弹出webView加载的新浪微博或者qq的网页授权,还有一种是跳转到本地的已经安装的新浪微博应用或者qq应用进行授权。第二种授权方式较SSO授权,体验会比较好一些,因为不需要用户输入新浪微博或QQ的用户名与密码。
第二种授权方式需要在plist中配置Scheme。SSO默认是打开的不需要配置。在AppDelegate中实现回调。
(6)DEMO截图:
DEMO下载地址:http://download.csdn/download/daleiwang/7734321