今天没事弄了个登陆功能,都是按照开发文档的步骤弄的.吐槽下,登陆功能是在社会化分享里面的,找了好久.
第一步:1.首先注册ShareSDK账号,登陆成功后点击自己头像选进入后台,然后选社会化分享模块,让你注册个应用.
当你再次进入时会显示应用的APP KEY和 App Secret(这两个需要一会加进自己的项目的)
2.然后下载SDK,注意是社会化分享模块的
3.将下载好的SDK拖进自己的工程里
第三步:设置ShareSDK的Appkey并初始化对应的第三方社交平台 打开*AppDelegate.m(*代表你的工程名字)导入头文件//新浪微博SDK需要在项目Build Settings中的Other Linker Flags添加"-ObjC"********特别注意********
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
#import
#import
//腾讯开放平台(对应QQ和QQ空间)SDK头文件
#import
#import
//微信SDK头文件
#import "WXApi.h"
//新浪微博SDK头文件
#import "WeiboSDK.h"
//新浪微博SDK需要在项目Build Settings中的Other Linker Flags添加"-ObjC"********特别注意********
//人人SDK头文件
#import
|
在- (BOOL)application: didFinishLaunchingWithOptions:方法中调用registerApp方法来初始化SDK并且初始化第三方平台
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
|
-
(
BOOL
)
application
:
(
UIApplication
*
)
application
didFinishLaunchingWithOptions
:
(
NSDictionary
*
)
launchOptions
{
/**
* 设置ShareSDK的appKey,如果尚未在ShareSDK官网注册过App,请移步到http://mob.com/login 登录后台进行应用注册,
* 在将生成的AppKey传入到此方法中。
* 方法中的第二个第三个参数为需要连接社交平台SDK时触发,
* 在此事件中写入连接代码。第四个参数则为配置本地社交平台时触发,根据返回的平台类型来配置平台信息。
* 如果您使用的时服务端托管平台信息时,第二、四项参数可以传入nil,第三项参数则根据服务端托管平台来决定要连接的社交SDK。
*/
[
ShareSDK
registerApp
:
@"iosv1101"
activePlatforms
:
@
[ //这里你用哪个就写那个
@
(
SSDKPlatformTypeSinaWeibo
)
,
@
(
SSDKPlatformTypeMail
)
,
@
(
SSDKPlatformTypeSMS
)
,
@
(
SSDKPlatformTypeCopy
)
,
@
(
SSDKPlatformTypeWechat
)
,
@
(
SSDKPlatformTypeQQ
)
,
@
(
SSDKPlatformTypeRenren
)
,
@
(
SSDKPlatformTypeGooglePlus
)
]
onImport
:
^
(
SSDKPlatformType
platformType
)
{
switch
(
platformType
)
{
case
SSDKPlatformTypeWechat
:
[
ShareSDKConnector
connectWeChat
:
[
WXApi
class
]
]
;
break
;
case
SSDKPlatformTypeQQ
:
[
ShareSDKConnector
connectQQ
:
[
QQApiInterface
class
]
tencentOAuthClass
:
[
TencentOAuth
class
]
]
;
break
;
case
SSDKPlatformTypeSinaWeibo
:
[
ShareSDKConnector
connectWeibo
:
[
WeiboSDK
class
]
]
;
break
;
case
SSDKPlatformTypeRenren
:
[
ShareSDKConnector
connectRenren
:
[
RennClient
class
]
]
;
break
;
case
SSDKPlatformTypeGooglePlus
:
[
ShareSDKConnector
connectGooglePlus
:
[
GPPSignIn
class
]
shareClass
:
[
GPPShare
class
]
]
;
break
;
default
:
break
;
}
}
onConfiguration
:
^
(
SSDKPlatformType
platformType
,
NSMutableDictionary
*appInfo
)
{
switch
(
platformType
)
{
case
SSDKPlatformTypeSinaWeibo
:
//设置新浪微博应用信息,其中authType设置为使用SSO+Web形式授权
[
appInfo
SSDKSetupSinaWeiboByAppKey
:
@"568898243"
appSecret
:
@"38a4f8204cc784f81f9f0daaf31e02e3"
redirectUri
:
@"http://www.sharesdk.cn"
authType
:SSDKAuthTypeBoth
]
;
break
;
case
SSDKPlatformTypeWechat
:
[
appInfo
SSDKSetupWeChatByAppId
:
@"wx4868b35061f87885"
appSecret
:
@"64020361b8ec4c99936c0e3999a9f249"
]
;
break
;
case
SSDKPlatformTypeQQ
:
[
appInfo
SSDKSetupQQByAppId
:
@"100371282"
appKey
:
@"aed9b0303e3ed1e27bae87c33761161d"
authType
:SSDKAuthTypeBoth
]
;
break
;
case
SSDKPlatformTypeRenren
:
[
appInfo
SSDKSetupRenRenByAppId
:
@"226427"
appKey
:
@"fc5b8aed373c4c27a05b712acba0f8c3"
secretKey
:
@"f29df781abdd4f49beca5a2194676ca4"
authType
:SSDKAuthTypeBoth
]
;
break
;
case
SSDKPlatformTypeGooglePlus
:
[
appInfo
SSDKSetupGooglePlusByClientID
:
@"232554794995.apps.googleusercontent.com"
clientSecret
:
@"PEdFgtrMw97aCvf0joQj7EMk"
redirectUri
:
@"http://localhost"
authType
:SSDKAuthTypeBoth
]
;
break
;
default
:
break
;
}
}
]
;
return
YES
;
}
(注意:每一个
case对应一个
break不要忘记填写,不然很可能有不必要的错误,新浪微博的外部库如果不要客户端分享或者不需要加关注微博的功能可以不添加,否则要添加,
QQ,微信,
google+这些外部库文件必须要加
)
|
第四步:添加实现代码 打开需要集成登录功能的视图源码,把如下代码复制并粘贴到你要登录的位置,例如到响应登录按钮的方法中。并且修改相应的参数即可。
这里以QQ登陆为例:(其他的平台也一样的处理,修改下初始化以及登陆方法里的平台类型参数就行,
新浪微博登录的平台类型为:SSDKPlatformTypeSinaWeibo,微信登录的平台类型为:SSDKPlatformTypeWechat),主要区别为url schemes的配置问题,见文章底部图片有各个主流平台url schemes 的配置示例。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
//例如QQ的登录
[
ShareSDK
getUserInfo
:SSDKPlatformTypeQQ //这里改成你用的第三方
onStateChanged
:
^
(
SSDKResponseState
state
,
SSDKUser
*user
,
NSError
*error
)
{
if
(
state
==
SSDKResponseStateSuccess
)
{
NSLog
(
@"uid=%@"
,
user
.
uid
)
;
NSLog
(
@"%@"
,
user
.
credential
)
;
NSLog
(
@"token=%@"
,
user
.
credential
.
token
)
;
NSLog
(
@"nickname=%@"
,
user
.
nickname
)
;
}
else
{
NSLog
(
@"%@"
,
error
)
;
}
}
]
;
|
也可以调用这个方法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
[
SSEThirdPartyLoginHelper
loginByPlatform
:SSDKPlatformTypeQQ
onUserSync
:
^
(
SSDKUser
*user
,
SSEUserAssociateHandler
associateHandler
)
{
//在此回调中可以将社交平台用户信息与自身用户系统进行绑定,最后使用一个唯一用户标识来关联此用户信息。
//在此示例中没有跟用户系统关联,则使用一个社交用户对应一个系统用户的方式。将社交用户的uid作为关联ID传入associateHandler。
associateHandler
(
user
.
uid
,
user
,
user
)
;
NSLog
(
@"dd%@"
,
user
.
rawData
)
;
NSLog
(
@"dd%@"
,
user
.
credential
)
;
}
onLoginResult
:
^
(
SSDKResponseState
state
,
SSEBaseUser
*user
,
NSError
*error
)
{
if
(
state
==
SSDKResponseStateSuccess
)
{
}
}
]
;
|