Skip to content

iOS登录分享:QQ、微博、微信、Facebook、Google、支付宝、Twitter

License

Notifications You must be signed in to change notification settings

nenhall/NHShareHelper

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

36 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

登录分享:QQ、微博、微信、Facebook、Google、支付宝、Twitter


Aaron Swartz


使用方法:将NHShareHelper文件夹拖入到你的工程中


一、在需要使用分享、登录的头文件中

#import "NHShareCallTool.h"
如你只需要QQ、微博分享、登录,那么把NHShareHelper文件夹下其它app的.h .m文件删除即可。

二、在AppDelegate.m文件中,重写如下方法:

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

    //注册app
    [NHShareCallTool registerAppSetAppConsts:@[NHQQ,NHWeiBo,NHWechat,NHFacebook]];
    
    //需要使用到facebook才需要调用
    [NHFacebook application:application
                didFinishLaunchingWithOptions:launchOptions
                enableUpdatesOnAccessTokenChange:YES];
    
    return YES;
}

- (BOOL)application:(UIApplication *)application
            openURL:(NSURL *)url
  sourceApplication:(NSString *)sourceApplication
         annotation:(id)annotation {
    return [NHShareCallTool application:application
                                openURL:url
                      sourceApplication:sourceApplication
                             annotation:annotation];
}

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url{
    return [NHShareCallTool application:application
                                openURL:url
                      sourceApplication:nil
                             annotation:nil];
}

- (BOOL)application:(UIApplication *)application
            openURL:(NSURL *)url
            options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {
    BOOL handled = [NHShareCallTool application:application
                         openURL:url
               sourceApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey]
                      annotation:options[UIApplicationOpenURLOptionsAnnotationKey]];
    return handled;
}

三、使用登陆或者分享的类,调用如下方法:

@interface ViewController ()<NHShareCallToolDelegate>

@implementation ViewController
- (void)viewDidLoad {
    [super viewDidLoad];
    [[NHShareCallTool sharedCallTool] addDelegate:self];
}
使用方法:
//登录 eg:qq登录
[NHShareCallTool loginSetAppConst:NHQQ viewController:nil];

//QQ分享
        [NHQQCall sendTitle:NHShareTitle
                     urlStr:NHShareUrl
                description:NHShareDescription(@"")
              previewImgURL:@"http://avatar.csdn.net/F/F/C/1_laencho.jpg"
                  shareType:type];
		    
//微信分享 
        [NHWechatCall sendLinkURL:NHShareUrl
                          TagName:NHShareTitle
                            Title:NHShareTitle
                      Description:NHShareDescription(@"")
                       ThumbImage:[UIImage imageNamed:@"test"]
                          InScene:scene];
   
//微博分享
        NSData *data = [NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"test" ofType:@"png"]];
        [NHWeiBoCall sendTitle:NHShareTitle
                 thumbnailData:data
                    webpageUrl:NHShareUrl];

分享结果回调代理:
登陆结果代理回调:
@protocol NHShareCallToolDelegate <NSObject>
/**
 *  获取QQ用户信息结果
 */
- (void)nh_QQRequestUserinfo:(NHQQUserinfo *)userinfo error:(NSError *)error;

/**
 *  获取微信用户信息结果
 */
- (void)nh_wechatRequestUserinfo:(NHWechatUserinfo *)userinfo error:(NSError *)error;

/**
 *  获取微博用户信息结果
 */
- (void)nh_weiBoRequestUserinfo:(NHWeiBoUserinfo *)userinfo error:(NSError *)error;

/**
 *  登陆结果,调用此方法时还未请求到用户信息
    根据项目需要,如果你需要在登录后立即做些什么,请实现此代理方法
 *
 *  @param appType  登录类型
 *  @param success  是否成功
 *  @param errorMsg 错误信息
 */
- (void)nh_loginResultAppType:(NHAppType)appType Success:(BOOL)success errorMsg:(NSString *)errorMsg;

/**
 *  分享结果
 *
 *  @param success   是否成功
 *  @param errorMsg  错误信息
 *  @param shareType 分享类型
 */
- (void)nh_shareResultSuccess:(BOOL)success errorMsg:(NSString *)errorMsg shareType:(NHAppType)shareType;
@end

四、工程配置:

具体的的第三方SDK配置,请参照相应的官方文档;
这里说下工程配置:

  1. 把如下的appID、appSecret设置成你自己的 Aaron Swartz
  2. URL Schemes配置,下面** 行中的key改成你自己的: Aaron Swartz
  3. info.plist配置:
    info.plist文件右键 > open AS > source code,添加如下配置,注意:是在前面的前面添加如下
<key>LSApplicationQueriesSchemes</key>
	<array>
		<string>alipay</string>
		<string>wechat</string>
		<string>weixin</string>
		<string>sinaweibohd</string>
		<string>sinaweibo</string>
		<string>sinaweibosso</string>
		<string>weibosdk</string>
		<string>weibosdk2.5</string>
		<string>weibosdk3.1</string>
		<string>mqq</string>
		<string>mqqapi</string>
		<string>mqqwpa</string>
		<string>mqqbrowser</string>
		<string>mttbrowser</string>
		<string>mqqOpensdkSSoLogin</string>
		<string>mqqopensdkapiV2</string>
		<string>mqqopensdkapiV3</string>
		<string>mqqopensdkapiV4</string>
		<string>wtloginmqq2</string>
		<string>mqzone</string>
		<string>mqzoneopensdk</string>
		<string>mqzoneopensdkapi</string>
		<string>mqzoneopensdkapi19</string>
		<string>mqzoneopensdkapiV2</string>
		<string>mqqapiwallet</string>
		<string>mqqopensdkfriend</string>
		<string>mqqopensdkdataline</string>
		<string>mqqgamebindinggroup</string>
		<string>mqqopensdkgrouptribeshare</string>
		<string>tencentapi.qq.reqContent</string>
		<string>tencentapi.qzone.reqContent</string>
		<string>fbapi</string>
		<string>fb-messenger-api</string>
		<string>fbauth2</string>
		<string>fbshareextension</string>
	</array>

<key>NSAppTransportSecurity</key>
	<dict>
		<key>NSExceptionDomains</key>
		<dict>
			<key>alipay.com</key>
			<dict>
				<key>NSIncludesSubdomains</key>
				<true/>
				<key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
				<true/>
				<key>NSTemporaryExceptionMinimumTLSVersion</key>
				<string>TLSv1.0</string>
				<key>NSTemporaryExceptionRequiresForwardSecrecy</key>
				<false/>
			</dict>
			<key>alipayobjects.com</key>
			<dict>
				<key>NSIncludesSubdomains</key>
				<true/>
				<key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
				<true/>
				<key>NSTemporaryExceptionMinimumTLSVersion</key>
				<string>TLSv1.0</string>
				<key>NSTemporaryExceptionRequiresForwardSecrecy</key>
				<false/>
			</dict>
			<key>qq.com</key>
			<dict>
				<key>NSIncludesSubdomains</key>
				<true/>
				<key>NSThirdPartyExceptionAllowsInsecureHTTPLoads</key>
				<true/>
				<key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
				<false/>
			</dict>
			<key>sina.cn</key>
			<dict>
				<key>NSExceptionMinimumTLSVersion</key>
				<string>TLSv1.0</string>
				<key>NSIncludesSubdomains</key>
				<true/>
				<key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
				<false/>
			</dict>
			<key>sina.com.cn</key>
			<dict>
				<key>NSIncludesSubdomains</key>
				<true/>
				<key>NSThirdPartyExceptionAllowsInsecureHTTPLoads</key>
				<true/>
				<key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
				<false/>
			</dict>
			<key>sinaimg.cn</key>
			<dict>
				<key>NSIncludesSubdomains</key>
				<true/>
				<key>NSThirdPartyExceptionAllowsInsecureHTTPLoads</key>
				<true/>
				<key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
				<false/>
			</dict>
			<key>sinajs.cn</key>
			<dict>
				<key>NSIncludesSubdomains</key>
				<true/>
				<key>NSThirdPartyExceptionAllowsInsecureHTTPLoads</key>
				<true/>
				<key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
				<false/>
			</dict>
			<key>weibo.cn</key>
			<dict>
				<key>NSExceptionMinimumTLSVersion</key>
				<string>TLSv1.0</string>
				<key>NSIncludesSubdomains</key>
				<true/>
				<key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
				<false/>
			</dict>
			<key>weibo.com</key>
			<dict>
				<key>NSExceptionMinimumTLSVersion</key>
				<string>TLSv1.0</string>
				<key>NSIncludesSubdomains</key>
				<true/>
				<key>NSThirdPartyExceptionAllowsInsecureHTTPLoads</key>
				<true/>
				<key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
				<false/>
			</dict>
		</dict>
	</dict>

Aaron Swartz


阿里配置说明文档:https://github.com/neghao/NHShareHelper/blob/master/help/AlibabaSetting.md


五、第三方sdk下载地址:

因sdk包比较大,所以请自动去官网下载相应的sdk包,也更好保证是官网最新版sdk,本来想用cocoapod管理的,但有些公司的pod库更新得很慢,无法保证sdk的版本,所以还是手动下载吧!下载完成后拖入到shareSDKS文件夹下相应的文件夹内:
qq: http://wiki.open.qq.com/wiki/mobile/SDK下载
配置: 添加SDK依赖的系统库文件。分别是”Security.framework”, “libiconv.dylib”,“SystemConfiguration.framework”,“CoreGraphics.Framework”、“libsqlite3.dylib”、“CoreTelephony.framework”、“libstdc++.dylib”、“libz.dylib”。 在工程配置中的“Build Settings”一栏中找到“Linking”配置区,给“Other Linker Flags”配置项添加属性值“-fobjc-arc”。

wechat: https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419319164&token=&lang=zh_CN
weiBo: http://open.weibo.com/wiki/SDK
文档:https://github.com/sinaweibosdk/weibo_ios_sdk/blob/master/微博iOS平台SDK文档V3.2.2.pdf

Alibaba:https://doc.open.alipay.com/docs/doc.htm?spm=a219a.7629140.0.0.a6mex3&treeId=218&articleId=105326&docType=1
facebook: https://developers.facebook.com/docs/ios

Aaron Swartz

facebook的sdk包会有多个framework库,如果只是使用基础的登录分享功能的话,只需要拖入上图中的几库就可以了。

About

iOS登录分享:QQ、微博、微信、Facebook、Google、支付宝、Twitter

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published