微博分享遇到的坑
错误
1 [NSConcreteMutableData wbsdk_base64EncodedString]
打印log
-[NSConcreteMutableData wbsdk_base64EncodedString]: unrecognized selector sent to instance 0x1447b3e60
2016-03-31 10:55:40.210 GlassAssist[429:218303] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSConcreteMutableData wbsdk_base64EncodedString]: unrecognized selector sent to instance 0x1447b3e60'
解决方法:
切记 单词为-ObjC O和C都是大写。
2 请求授权显示错误页面(error:redirect_uri_mismatch)
解决方法:
登录http://open.weibo.com ,选择[管理中心]->[我的应用]->["您的应用名"]->展开左侧[应用信息]->[高级信息]->OAuth2.0 授权设置 右上角[编辑]->在框里填入回调地址即可.(前期测试应用时随便填个公司主页即可.两个地址可以相同)
3 授权失败-error code:202
#warning:[新浪微博]应用信息有误,不能进行相关操作。请检查本地代码中和服务端的[新浪微博]平台应用配置是否有误!
本地配置:null
服务器配置:null
这个问题是初始化的时候的问题:
(1)
[ShareSDK registerApp:@"b4329f653xxx"
activePlatforms:@[
@(SSDKPlatformTypeWechat)]
onImport:^(SSDKPlatformType platformType){
switch (platformType){
case SSDKPlatformTypeWechat:
[ShareSDKConnector connectWeChat:[WXApi class]delegate:self];
break;
case SSDKPlatformTypeQQ:
[ShareSDKConnector connectQQ:[QQApiInterface class] tencentOAuthClass:[TencentOAuth class]];
break;
case SSDKPlatformTypeSinaWeibo:
[ShareSDKConnector connectWeibo:[WeiboSDK class]];
break;
default:
break;
}
} onConfiguration:^(SSDKPlatformType platformType, NSMutableDictionary *appInfo){
switch (platformType){
case SSDKPlatformTypeSinaWeibo:
//设置新浪微博应用信息,其中authType设置为使用SSO+Web形式授权
[appInfo SSDKSetupSinaWeiboByAppKey:@"xxxxxxxxx"
appSecret:@"xx7426edc4443e80d8efd73eadc3xxx"
redirectUri:@"http://www.ingenic.cn"
authType:SSDKAuthTypeBoth];
break;
case SSDKPlatformTypeWechat:
[appInfo SSDKSetupWeChatByAppId:@"wx59f8918dcbxxxxx"
appSecret:@"xxb231f64dce8fdf7a02d3538659xxx"];
break;
default:
break;
}
}];
这是因为上面的activieplktforms 参数没有写新浪微博的,所以造成新浪微博分享失败,将其修改成
activePlatforms:@[@(SSDKPlatformTypeWechat),@(SSDKPlatformTypeSinaWeibo)]
就可以了。
(2)出现此问题的情况,还有就是设置app_id和app_secret的时候不能写成子平台。
case SSDKPlatformSubTypeWechatSession:
case SSDKPlatformSubTypeWechatTimeline:
[appInfo SSDKSetupWeChatByAppId:@"wx59f8918dcx x x x"
appSecret:@"xxxb231f64dce8fdf7a02d353865xxxx"];
这样写是不行的,应该写成
SSDKPlatformTypeWechat。