sharesdk qq登录失败第三方登录 怎么需要重新输入qq账号密码

亲爱的开发者朋友:我们很高兴和大家分享一个消息,团队正式启用顶级域名,Mob即Mobile缩写,全面转型为移动
本帖最后由 JackSun 于
18:18 编辑
注意:QQ本身没有授权功能,所以想要使用QQ做第三方登录必须通过QQ空间来实现!
第一步:集成ShareSDK(步骤同集成分享的一样,如果已经集成过就不用再重新集成了),这里需要注意的是,由于是要通过QQ空间来实现授权登录,所以在下载ShareSDK包的时候别忘了勾选QQ空间,不然会报尚未导入平台(6)的错误。
第二步:打开工程中的*AppDelegate.m(*代表你的工程名字)?文件,导入QQSDK的头文件:
& && && && &#import &TencentOpenAPI/QQApiInterface.h&
& && && && &#import &TencentOpenAPI/TencentOAuth.h&
& && & 检查是否已加入handleOpenURL的处理方法,如果没有则添加如下代码:
- (BOOL)application: (UIApplication *)application&&handleOpenURL: (NSURL *)url
& & return [ShareSDK handleOpenURL:url
& && && && && && && && && & wxDelegate:
- (BOOL)application: (UIApplication *)application
& && && && && & openURL: (NSURL *)url
& && && && && & sourceApplication: (NSString *)sourceApplication
& && && && && & annotation: (id)annotation
& & return [ShareSDK handleOpenURL: url
& && && && && && & sourceApplication:sourceApplication
& && && && && && & annotation: annotation
& && && && && && & wxDelegate:
第三步: 加入QQ空间初始化方法
& &在*AppDelegate.m里面的
- (BOOL)application: (UIApplication *)application didFinishLaunchingWithOptions: (NSDictionary *)launchOptions{}方法中
//初始化我们的sdk
[ShareSDK &];
//添加QQ空间应用
[ShareSDK connectQZoneWithAppKey:@&&
& && && && && && && && && & appSecret:@&aed9be27bae87cd&
& && && && && && & qqApiInterfaceCls:[QQApiInterface class]
& && && && && && && &tencentOAuthCls:[TencentOAuth class];
注意:这里需要填入的AppKey就是您在QQ互联注册应用的AppID,appSecret就是AppKey!
第四步:配置QQ空间的URL Schemes
& & 打开*-Info.plist(*代表你的工程名字)。找到URL types配置项(如果没有则新增),展开URL types – URL Schemes,在URL Schemes下分别各新增一项用于QQ空间的Scheme(如果不添加则会导致法返回应用)。其填写格式为:tencent+appID(你在QQ空间中申请的AppId), 如:tencent。
第五步:授权登录并获取用户信息
& & 在您的点击事件方法中加入授权获取用户信息接口:
[ShareSDK getUserInfoWithType:ShareTypeQQSpace
& && && && && && && && && && && & authOptions:nil
& && && && && && && && && && && && && && && &result:^(BOOL result, id&ISSPlatformUser& userInfo, id&ICMErrorInfo& error) {
& && && && && && && && && && &
& && && && && && && && && && & if (result)
& && && && && && && && && && & {& && && && && && &
& && && && && && && && && && &//打印输出用户uid:& && && && && && && && && && && &
& && && && && && && && && && && &&&NSLog(@&uid = %@&,[userInfo uid]);
& && && && && && && && && &&&//打印输出用户昵称:
& && && && && && && && && && && &&&NSLog(@&name = %@&,[userInfo nickname]);
& && && && && && && && && & //打印输出用户头像地址:
& && && && && && && && && && && &&&NSLog(@&icon = %@&,[userInfo profileImage]);
& &&&NSLog(@&授权失败!error code == %d, error code == %@&, [error errorCode], [error errorDescription]);
注意:ShareTypeQQSpace这里一定是写QQSpace不能写QQ否则会报 不支持授权功能的错误。
& && && &&&这里只在result里面做了输出的操作 如果您想要做存储数据或者其它显示都可以在这里面操作!
已回复 QQ空间和QQ好友分享都必须跳转QQ客户端分享,不会跳转网页, 所以你不安装QQ客户端肯定报错 6004 尚未安装QQ客户端 分享失败!
我在BUG提交区提交了一个QQ空间授权、分享的问题,帮我看看吧
& & [ShareSDK getUserInfoWithType:ShareTypeQQSpace authOptions:nil result:^(BOOL result, id&ISSPlatformUser& userInfo, id&ICMErrorInfo& error) {
& && && && &if (result) {
15:20:49.331 memberCenter[0] #warning: 尚未导入平台类型:[QZoneConnection (6)]
15:20:50.328 memberCenter[0] #warning: 获取app配置信息失败: The network connection was lost.
15:20:52.001 memberCenter[0] #warning:平台[(null)(6)]尚未集成!
15:20:57.481 memberCenter[0] #warning:平台[(null)(6)]尚未集成!
15:20:57.483 memberCenter[0] #warning:平台[(null)(6)]尚未集成!
15:20:57.483 memberCenter[0] #warning:平台[(null)(6)]尚未集成!
15:20:57.483 memberCenter[0] 平台[(null)(6)]不支持授权功能!
15:20:49.331 memberCenter[0] #warning: 尚未导入平台类型:[QZoneConnection (6)]
15:20:50.328 memberCenter[0] #warning: 获取app配置信息失败: The network connection was lost.
15:20:52.001 memberCenter[0] #warning:平台[(null)(6)]尚未集成!
15:20:57.481 memberCenter[0] #warning:平台[(null)(6)]尚未集成!
15:20:57.483 memberCenter[0] #warning:平台[(null)(6)]尚未集成!
15:20:57.483 memberCenter[0] #warning:平台[(null)(6)]尚未集成!
15:20:57.483 memberCenter[0] 平台[(null)(6)]不支持授权功能!
亲 您下载我们SDK的时候选择QQ空间了没?选择的话 在AppDelegate.m一定要初始化QQ空间
已经解决了 谢谢!
#warning: 获取app配置信息失败: 未知错误
这个怎么解决
[ShareSDK registerApp: @&xxxxxxx&];& &
这句代码要写在所有初始化代码的最前面,而且里面填写的key 一定要是在我们官网添加应用得到的
你好,使用qq做第三方登录的,如果没有安装客户端会提示没有安装,qq,,,,那我可以不可以直接用网页来登录qq呢
免费咨询 | 24小时在线> 博客详情
之前用过这个几次了,而每次都没有记录一下具体的步骤,这次就写一下吧
1、去ShareSDK下载官方的SDK
2、现在他们的服务特别人性化,解压SDK之后会发现有一个"双击此批处理文件可以生成一个快速集成ShareSDK的目录.bat"这样一个文件,打开之后按照提示输入你的应用包名,他就会给你生成一个目录,你直接拷贝到你的项目中就OK了,拷贝进来之后会报错,其实就是R文件报错,在导入R文件包名的时候选择你自己的包名,然后就完事了,clean一下你的工程。
3、在assets目录下有一个ShareSDK.conf的文件,打开,找到你要集成的平台名字,然后APPKEY就不用说了,这里说一下&AppSecret 这个是新浪特有的
SortId="1" & 这个是集成的平台的独有ID,int类型的,数字越小越靠前
ShortLinkConversationEnable用来设置此平台是否开启转短链的功能,布尔值,不设置则默认为 & & true,此字段影响到回流统计,建议保留默认配置
下面是在代码中进行集成
1.首先在你的项目入口的activity的oncreat()方法中,加上ShareSDK.initSDK(this);这句代码是初始化ShareSDK的 2、如果需要统计应用被打开次数,可以在出口activity中的onDestroy()方法的第一行中加入ShareSDK.stopSDK(this);
这行代码会结束Share SDK的统计功能并释放资源。
&&&&InitSDK是可以重复调用的,其实Share SDK建议在您不确定的时候调用这个方法,来保证Share SDK被正确初始化。而stopSDK一旦调用了,就必须重新调用InitSDK才能使用Share SDK的功能,否则会出现空指针异常。
到这里,基本的准备工作就已经完成了。下面是具体的集成代码了,这里以新浪微博和微信为例:
1、首先,说一下微信,腾讯的东西真TM不爽,微信这个玩意,非要搞什么签名和包名捆绑,一系列麻烦的东西,下面说一下
&&&&1)进入微信开放平台添加Android平台的信息。这些信息包括:下载地址、应用签名和包名。
上图中的下载地址不可以是应用apk文件的直接地址,而报名则是您应用的包名。至于应用签名,事实上您应用签名文件(keystore文件)的MD5值。有多种计算方式:
(1)使用微信提供的签名计算工具,来签名: 如果您希望通过这个方法来计算签名,则需要下载微信的签名计算工具。此处需要注意的是下载回来的文件一定是“apk”的,如果您下载回来的文件是zip或者后缀名,请修改其后缀名为“apk”,并复制到您的手机上安装。 然后为您的应用导出一个签过名的apk。请注意,这个签名应该是您将来发布应用时的签名,也就是所谓的“正式包签名”。这里需要解释一下,微信并不要求具体使用的签名文件的性质,但是修改签名经常会导致问题,所以为了避免不必要的麻烦,Share SDK强烈建议您使用正式包的签名。 安装导出的apk文件,然后运行微信的签名计算工具。并在其中输入您应用的包名,微信会自动计算您应用所签keystore的MD5:转至微信开放平台,将计算好的结果填写到其中并保存。
个人比较推荐这个方法,用eclipse的那种方法会因为eclipse的bug报错
修改授权页标题栏:
在清单文件中修改一下之前插入的授权页activity
主要是修改下面的meta-data
android:name="cn.sharesdk.framework.ShareSDKUIShell"
android:configChanges="keyboardHidden|orientation"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:windowSoftInputMode="stateHidden|adjustResize" &
&meta-data android:name="Adapter" android:value="com.example.share.MyAdapter" /&
&/activity& 然后创建MyAdapter这个类,继承cn.sharesdk.framework. authorize.AuthorizeAdapter,
然后重写onCreat方法等。重新定义界面
这里有几个方法会用到:
还有getPlatformName()-获取是哪个平台的授权页,getWebBody(),分享的内容
人打赏支持
码字总数 17518
支付宝支付
微信扫码支付
打赏金额: ¥
已支付成功
打赏金额: ¥5555人阅读
个人学习用非商用
使用ShareSDK实现第三方登录和分享
1、创建项目
2、在shareSDK网站上下载相关的SDK并解压
3、找开ShareSDK for Android文件夹,双击QuickIntegrater.jar文件,选择需要集成的第三方软件,确定后形成Sample文件夹,将此文件夹下的所有文件复制到自己的项目中(覆盖,注意,如出现红色叉号,可找开对应项目检查文件是否出现乱码,出现乱码更改编码格式即可)。
4、assets文件下ShareSDK.xml进行相应配置(需要在ShareSDK官网上生成appkey,和第三方平台上注册相应的AppKey)。
这里写代码片
&?xml version="1.0" encoding="utf-8"?&
&DevInfor&
1、表格中的第一项
AppKey="api20" /&
是必须的,其中的AppKey是您在ShareSDK上注册的开发者帐号的AppKey
2、所有集成到您项目的平台都应该为其在表格中填写相对应的开发者信息,以新浪微博为例:
&SinaWeibo
SortId="1"
AppSecret="38a4ff9f0daaf31e02e3"
RedirectUrl=""
Enable="true" /&
其中的SortId是此平台在分享列表中的位置,由开发者自行定义,可以是任何整型数字,数值越大
越靠后AppKey、AppSecret和RedirectUrl是您在新浪微博上注册开发者信息和应用后得到的信息
Id是一个保留的识别符,整型,ShareSDK不使用此字段,供您在自己的项目中当作平台的识别符。
Enable字段表示此平台是否有效,布尔值,默认为true,如果Enable为false,即便平台的jar包
已经添加到应用中,平台实例依然不可获取。
各个平台注册应用信息的地址如下:
http://open.
http://dev.
http:///intro/login/
http://open.
http://open.
http://open.
http://open.t.163.com
有道云笔记
http:///open/developguide.html
FourSquare
搜狐随身看
https://open./
http:///services/
http:///developers
https:///developers
http:///developer
http://vk.com/dev
http://open.yixin.im/
http://open./
http://media.line.me/zh-hant/
http:///developer/apps/new
KakaoStory
AppKey = "13e094dfa4350"/& &!
&SinaWeibo
SortId="1"
AppSecret="38a4ff9f0daaf31e02e3"
RedirectUrl=""
ShareByAppClient="true"
Enable="true" /&
&TencentWeibo
SortId="2"
AppSecret="ae36f4ee3946e1cbb98dff5c"
RedirectUri=""
Enable="true" /&
SortId="3"
AppKey="0PeCRCXKeraeYAnu"
Enable="true" /&
Wechat微信和WechatMoments微信朋友圈的appid是一样的;
注意:开发者不能用我们这两个平台的appid,否则分享不了
微信测试的时候,微信测试需要先签名打包出apk,
sample测试微信,要先签名打包,keystore在sample项目中,密码123456
BypassApproval是绕过审核的标记,设置为true后AppId将被忽略,故不经过
审核的应用也可以执行分享,但是仅限于分享文字和图片,不能分享其他类型,
默认值为false。此外,微信收藏不支持此字段。
SortId="4"
AppId="wxf87885"
AppSecret="ec4c9a9f249"
BypassApproval="false"
Enable="true" /&
&WechatMoments
SortId="5"
AppId="wxf87885"
AppSecret="ec4c9a9f249"
BypassApproval="false"
Enable="true" /&
&WechatFavorite
SortId="6"
AppId="wxf87885"
AppSecret="ec4c9a9f249"
Enable="true" /&
SortId="7"
AppKey="0PeCRCXKeraeYAnu"
ShareByAppClient="true"
Enable="true" /&
SortId="8"
ConsumerKey="179"
ConsumerSecret="a5fe26c80cb573"
RedirectUrl=""
Enable="true" /&
SortId="9"
ConsumerKey="LRBM0H75rWrU9gNHvlEAA2aOy"
ConsumerSecret="gbeWsZvA9ELJSdoBzJ5oLKX0TU09UOwrzdGfo9Tg7DjyGuMe8G"
CallbackUrl=""
Enable="true" /&
SortId="10"
AppId="226427"
ApiKey="fc5b8aed373c4c27a05b712acba0f8c3"
SecretKey="f29df781abdd4f49beca5a"
Enable="true" /&
SortId="11"
AppKey="887cee81ffc"
AppSecret="dab6db2a23"
RedirectUri=""
Enable="true" /&
SortId="12"
Enable="true" /&
&ShortMessage
SortId="13"
Enable="true" /&
SortId="16"
ApiKey="031a96a3aa8b28af094fc3eaffa17a0d"
Secret="2e675ed"
RedirectUri=""
Enable="true" /&
SortId="17"
HostType="product"
ConsumerKey="dcde25dca105bcc3dab940"
ConsumerSecret="de7ff44838fe"
RedirectUri="/"
Enable="true" /&
在中国大陆,印象笔记有两个服务器,一个是沙箱(sandbox),一个是生产服务器(china)。
一般你注册应用,它会先让你使用sandbox,当你完成测试以后,可以到
http:///support/上激活你的ConsumerKey,激活成功后,修改HostType
为china就好了。至于如果您申请的是国际版的印象笔记(Evernote),则其生产服务器类型为“product”。
如果目标设备上已经安装了印象笔记客户端,ShareSDK允许应用调用本地API来完成分享,但
是需要将应用信息中的“ShareByAppClient”设置为true,此字段默认值为false。
SortId="19"
HostType="sandbox"
ConsumerKey="sharesdk-7807"
ConsumerSecret="d05bf"
ShareByAppClient="true"
Enable="true" /&
SortId="20"
ApiKey="ejo5ibkye3vo"
SecretKey="cC7B2jpxITqPLZ5M"
RedirectUrl=""
Enable="true" /&
&GooglePlus
SortId="21"
Enable="true" /&
&FourSquare
SortId="22"
ClientID="G0ZI20FM30SJAJTX2RIBGD05QV1NE2KVIM2SPXML2XUJNXEU"
ClientSecret="3XHQNSMMHIFBYOLWEPONNV4DOTCDBQH0AEMVGCBG0MZ32XNU"
RedirectUrl=""
Enable="true" /&
&Pinterest
SortId="23"
ClientId="1432928"
Enable="true" /&
Id="24"SortId="24"
ApiKey="33d833ee6b6fcadd313dd"
ApiSecret="3a2c5b42a8fbb8bb"
RedirectUri=""
Enable="true" /&
Id="25"SortId="25"
OAuthConsumerKey="2QUXqO9fcgGdtGG1FcvML6ZunIQzAEL8xY6hIaxdJnDti2DYwM"
SecretKey="3Rt0sPFj7u2g39mEVB3IBpOzKnM3JnTtxX2bao2JKk4VV1gtNo"
CallbackUrl=""
Enable="true" /&
SortId="26"
AppKey="i5vw2mex1zcgjcj"
AppSecret="3i9xifsgb4omr0s"
RedirectUri=""
Enable="true" /&
&VKontakte
SortId="27"
ApplicationId="3921561"
Enable="true" /&
&Instagram
SortId="28"
ClientId="ff68efc"
ClientSecret="1b2e82f05c3fe34e31a1"
RedirectUri=""
Enable="true" /&
Yixin易信和YixinMoments易信朋友圈的appid是一样的;
注意:开发者不能用我们这两个平台的appid,否则分享不了
易信测试的时候需要先签名打包出apk,
sample测试易信,要先签名打包,keystore在sample项目中,密码123456
BypassApproval是绕过审核的标记,设置为true后AppId将被忽略,故不经过
审核的应用也可以执行分享,但是仅限于分享文字或图片,不能分享其他类型,
默认值为false。
SortId="29"
AppId="yx0d9a9f80ff"
BypassApproval="true"
Enable="true" /&
&YixinMoments
SortId="30"
AppId="yx0d9a9f80ff"
BypassApproval="true"
Enable="true" /&
SortId="31"
AppKey="EEEEDBF5357E3"
AppSecret="5EDE59F37B3EFA8F65EEFB"
RedirectUri=""
Enable="true" /&
SortId="32"
Enable="true" /&
&KakaoTalk
SortId="33"
AppKey="48d3f524e4a636b08d81b3ceb50f1003"
Enable="true" /&
&KakaoStory
SortId="34"
AppKey="48d3f524e4a636b08d81b3ceb50f1003"
Enable="true" /&
SortId="35"
Enable="true" /&
&Bluetooth
SortId="36"
Enable="true" /&
SortId="37"
ConsumerKey="ba7edf05"
Enable="true" /&
&Instapaper
SortId="38"
ConsumerKey="4rDJORmcOcSAZL1YpqGHRI605xUvrLbOhkJ07yO0wWrYrc61FA"
ConsumerSecret="GNr1GespOQbrm8nvd7rlUsyRQsIo3boIbMguAl9gfpdL0aKZWe"
Enable="true" /&
&FacebookMessenger
SortId="39"
AppId="179"
Enable="true" /&
SortId="52"
AppId="5895"
Enable="true"/&
&/DevInfor&
5、在AndroidManifest.xml配置文件中添加权限:
android:name="android.permission.GET_TASKS" /&
android:name="android.permission.INTERNET" /&
android:name="android.permission.ACCESS_WIFI_STATE" /&
android:name="android.permission.ACCESS_NETWORK_STATE" /&
android:name="android.permission.CHANGE_WIFI_STATE" /&
android:name="android.permission.WRITE_EXTERNAL_STORAGE" /&
android:name="android.permission.READ_PHONE_STATE" /&
android:name="android.permission.MANAGE_ACCOUNTS" /&
android:name="android.permission.GET_ACCOUNTS" /&
android:name="android.permission.BLUETOOTH" /&
android:name="android.permission.BLUETOOTH_ADMIN" /&
添加activity:
/Theme.Translucent.NoTitleBar"
android:windowSoftInputMode="stateHidden|adjustResize" &
android:scheme="tencent" /&
android:name="android.intent.action.VIEW" /&
android:name="android.intent.category.BROWSABLE" /&
android:name="android.intent.category.DEFAULT" /&
android:name="com.sina.weibo.sdk.action.ACTION_SDK_REQ_ACTIVITY" /&
android:name="android.intent.category.DEFAULT" /&
6、代码中实现:
代码实现中需要在启动项oncreat()方法中或application类中初始SDK:
ShareSDK.initSDK(this);
分享代码:
这里写代码片
public void share(View v) {
OnekeyShare oks = new OnekeyShare();
// 关闭sso授权
oks.disableSSOWhenAuthorize();
// 分享时Notification的图标和文字 2.5.9以后的版本不调用此方法
// oks.setNotification(R.drawable.ic_launcher,
// getString(R.string.app_name));
// title标题,印象笔记、邮箱、信息、微信、人人网和QQ空间使用
oks.setTitle(getString(R.string.share));
// titleUrl是标题的网络链接,仅在人人网和QQ空间使用
oks.setTitleUrl(““);
// text是分享文本,所有平台都需要这个字段
oks.setText(“个人分享”);
// imagePath是图片的本地路径,Linked-In以外的平台都支持此参数
// oks.setImagePath(“/sdcard/test.jpg”);//确保SDcard下面存在此张图片
// url仅在微信(包括好友和朋友圈)中使用
oks.setUrl(““);
// comment是我对这条分享的评论,仅在人人网和QQ空间使用
oks.setComment(“测试一下了”);
// site是分享此内容的网站名称,仅在QQ空间使用
oks.setSite(getString(R.string.app_name));
// siteUrl是分享此内容的网站地址,仅在QQ空间使用
oks.setSiteUrl(““);
// 启动分享GUI
oks.show(this);
public void QLogin(View v){
Platform platform11 = ShareSDK.getPlatform(QQ.NAME);
platform11.authorize();
platform11.showUser(null);
tm = (TelephonyManager) MainActivity.this.getSystemService(TELEPHONY_SERVICE);
imi = tm.getDeviceId();
platform11.setPlatformActionListener(new PlatformActionListener() {
public void onError(Platform platform11, int arg1, Throwable arg2) {
@SuppressLint("SimpleDateFormat") @Override
public void onComplete(Platform platform11, int arg1, HashMap&String, Object& arg2) {
System.out.println("登录成功。。。。");
String userId = platform11.getDb().getUserId();
String userName = platform11.getDb().getUserName();
String token = platform11.getDb().getToken();
String userIcon = platform11.getDb().getUserIcon();
long expiresTime = platform11.getDb().getExpiresTime();
SimpleDateFormat sdf3 = new SimpleDateFormat("yyyy-MM-dd HH:mm");
System.out.println("用户ID为:"+userId);
System.out.println("用户名称为:"+userName);
System.out.println("token
System.out.println("expiresTime
"+sdf3.format(expiresTime));
public void onCancel(Platform arg0, int arg1) {
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:6836次
排名:千里之外}

我要回帖

更多关于 sharesdk 第三方登录 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信