友盟iOS微信登陆没有回调的原因

作者: iHTCboy | 来源:发表于2015-08-07 00:22 被阅读13148次

    1、在友盟文档中这样说:

    链接

    7.4  微信登录
    添加配置文件参考文档:添加微信及朋友圈,添加相关库文件,配置URL schemes及添加系统回调
    
    注意微信登录必须先在微信开放平台申请微信登录权限
    在你的程序APPdelegate入口方法添加下面的代码
    
      #import "UMSocialWechatHandler.h"
        //设置微信AppId、appSecret,分享url
        [UMSocialWechatHandler setWXAppId:@"wxd930ea5d5a258f4f" appSecret:@"db426a9829e4b49a0dcac7b4162da6b6" url:@"http://www.umeng.com/social"];
    
    在微信登录按钮中实现下面的方法
    
      UMSocialSnsPlatform *snsPlatform = [UMSocialSnsPlatformManager getSocialPlatformWithName:UMShareToWechatSession];
    
            snsPlatform.loginClickHandler(self,[UMSocialControllerService defaultControllerService],YES,^(UMSocialResponseEntity *response){
    
                if (response.responseCode == UMSResponseCodeSuccess) {
    
                    UMSocialAccountEntity *snsAccount = [[UMSocialAccountManager socialAccountDictionary]valueForKey:UMShareToWechatSession];
    
                    NSLog(@"username is %@, uid is %@, token is %@ url is %@",snsAccount.userName,snsAccount.usid,snsAccount.accessToken,snsAccount.iconURL);
    
                }
    
     });
    
    在授权完成后调用获取用户信息的方法
    
    //得到的数据在回调Block对象形参respone的data属性
    [[UMSocialDataService defaultDataService] requestSnsInformation:UMShareToWechatsession  completion:^(UMSocialResponseEntity *response){
            NSLog(@"SnsInformation is %@",response.data);
        }];
    
    
    

    2、实践使用时:

    #pragma mark - 微信登录
    - (void)loginViewClickedWeiXiButton{
        
        [UMSocialData setAppKey:@"55bb141a67e58e9f80001801"];
        [UMSocialWechatHandler setWXAppId:@"wx2802d4e49f68996f" appSecret:@"f1bf8a16c5f87570ab07782d3e0ab223" url:@"http://www.umeng.com/social"];
        UMSocialSnsPlatform *snsPlatform = [UMSocialSnsPlatformManager getSocialPlatformWithName:UMShareToWechatSession];
        snsPlatform.loginClickHandler(self,[UMSocialControllerService defaultControllerService],YES,^(UMSocialResponseEntity *response){
            //  获取微博用户名、uid、token等
            if (response.responseCode == UMSResponseCodeSuccess) {
                 UMSocialAccountEntity *snsAccount = [[UMSocialAccountManager socialAccountDictionary]valueForKey:UMShareToWechatSession];
                NSLog(@"username is %@, uid is %@, token is %@ iconUrl is %@",snsAccount.userName,snsAccount.usid,snsAccount.accessToken,snsAccount.iconURL);
            }
        });
        
    }
    

    3、【坑在这里】没有回调时因为要在应用代理方法中增加:

    //sdk
    #import "UMSocialSnsService.h"
    
    - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
    {
        return  [UMSocialSnsService handleOpenURL:url wxApiDelegate:nil];
    }
    
    // 2018.01.05 更新: iOS 9.0 以上替换上面的代理回调
    - (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options
    {
         return  [UMSocialSnsService handleOpenURL:url wxApiDelegate:nil];
    }
    - (void)applicationDidBecomeActive:(UIApplication *)application
    {
        [UMSocialSnsService  applicationDidBecomeActive];
    }
    
    

    最后说明

    • 微信的openid对应友盟里叫usid

    下面是授权成功的回调数据:

    - UMSocial:  makeRequestWithPath is /share/token/53290df956240b6b4a0084b3/, parameters is {
        "access_token" = "OezXcEiiBSKSxW0eoylIeJDUKD6z6dmr42JANLPjNN56WRFnd-vVJO37ma0gCpKY1v5q8EVEMwdQqzvXoFFpe1jQXUzjqukub9-228J8sjvugvVVQYvzkhyvAgItvkYmMIGD_cE2hAWUm44_qCB-oQ";
        ak = 53290df956240b6b4a0084b3;
        de = "iPhone7,1";
        dt = 1438857527939;
        ek = 4b37315fd0421b0b3a682a4a5e4487e9;
        en = WiFi;
        "expires_in" = 7199;
        mac = "02:00:00:00:00:00";
        openid = oyAaTjrJMAb3qfCbyDRp3h0NKyew;
        openudid = 147ad485c3b80ffd54bfc8689c2d7db1ed88994b;
        os = iOS;
        pcv = "2.0";
        "refresh_token" = "OezXcEiiBSKSxW0eoylIeJDUKD6z6dmr42JANLPjNN56WRFnd-vVJO37ma0gCpKYHXgyDeQ4Xqm60G-omrGp2u-KbIy7zTP5gV5dnw3RVN-GzkjY8gCWIMC3_cCHcflH6IPexy2c-k46gGG0M07p6g";
        sdkv = "4.2.3";
        to = wxsession;
        tp = 0;
        uid = 462ae0edb57d53dfd2affb5e4ae36ad;
        usid = oyAaTjrJMAb3qfCbyDRp3h0NKyew;
    } 
    [18:38:48.197( 2055)] - UMSocial:  actionType is 15 , received json Dic is {
        data =     {
        };
        msg = "no error";
        st = 200;
    } 
    
    

    -

    • 如果有什么疑问,可以在评论区一起讨论;
    • 如果有什么不正确的地方,欢迎指导!

    2018.01.05 更新

    iOS 9.0 以后,系统新增加代理回调方法:

    • (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options
      {
      return [UMSocialSnsService handleOpenURL:url wxApiDelegate:nil];
      }

    试试增加这个后行不行,很久没有使用友盟SDK了,现在都是做国外产品,如果还不行,大家问一下友盟客服啊。

    注:本文首发于 iHTCboy's blog,如若转载,请注明来源。

    相关文章

      网友评论

      • Ko_Neko:博主请问可否加一下微信,我采用你的方法在appdelegate里添加了那2个方法 还是没有回调。不知道怎么回事。求助了。
        iHTCboy:解决了吗? iOS 9.0 以后,系统新增加代理回调方法,详见文章更新。
      • 小小夕舞:同样的方法只不过platformType不一样而已,而且qq、微博都登录成功了,就微信一直出问题。微信登录的时候会跳进微信授权界面,点击【确认登录】,就跳会APP了,但是又自动跳微信授权界面了。基本上只有点击了【确认登录】就会跳会APP,然后又回到授权界面。对应方法的block不走,不知道是为什么,在线等,急
        小小夕舞:@iHTCboy 更新了sdk后报错 secret不匹配 现在解决了 谢谢你的回复
        iHTCboy:@小小夕舞 那你看他打印的时候有没有回调到对应的token回来,如果有回来,就是你处理的时候没有在项目里面回电调给微信sdk。
      • xiang天问:我的友盟微信分享成功后,选择返回应用,那个最外层的回调都不走,求教?
        iHTCboy:解决了吗? iOS 9.0 以后,系统新增加代理回调方法,详见文章更新。
      • 你就在世界的中心:大神你好,应用跳到微信登录界面,点击那个确认登录按钮没反应,是什么原因
        七夜叹:你解决了吗,我也是这样
      • 3d175155e863:楼主,求线下联系方式,有问题要请教
        iHTCboy:解决了吗? iOS 9.0 以后,系统新增加代理回调方法,详见文章更新。
      • 3d175155e863: 我配置完了,系统回调block也有走进去,但是response里面data = {
        wxsession = {
        };
        };
        message = "no error";
        responseCode = 200;
        responseType = 9;
        viewControllerType = 7;
        }这是怎么回事,求解答
        iHTCboy:看看友盟文档有没有说明什么原因吧
      • 童话镇里蜿蜒的河:请问楼主
        我友盟只选择了微信分享。点击分享时 如果微信没有登录 会到微信的登录页面。但是,登录完就到了微信正常页面,并不是到分享的选择好友的界面? 这是怎么回事 。 如果我在分享时,微信是有账号登录的,就可以正常分享? 求解
        3d175155e863:我配置完了,系统回调block也有走进去,但是response里面data = {
        wxsession = {
        };
        };
        message = "no error";
        responseCode = 200;
        responseType = 9;
        viewControllerType = 7;
        }这是怎么回事,求解答
        iHTCboy:@童话镇里蜿蜒的河 你都没有登录,那微信肯定要让用户先登录,token才能拿到用户信息,才能够回调给你啊,但是问题就在这里,微信他不可能通过你这边打开微信之后,然后还能记住你登录过程到最后还会调给你,这样的一个多步骤应该是很难实现了,那还麻烦,所以就只能没有登录的,登录回来再登陆了。
      • ac1d1faa294c:我碰到了一个问题,就是集成了友盟SDK,获取微信的授权,用来登录,能够成功唤起微信,在微信里面点击确认登录后回到我的APP,然后又回到微信去了,出来一个白色的界面,什么也没有,导航条上有个返回按钮,按钮点了没有。。这个怎么办?
        iHTCboy:没有遇到过。检查一下配置是否正确,写的appid是否有误,scheme正确等
        知交:解决了吗 怎么回事啊?
      • 583a28b22745:在iOS9以后回调是这个appdelegate代理

        - (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString *,id> *)options
        {


        [UMSocialSnsService handleOpenURL:url];

        return YES;
        }
        iHTCboy:@楼澜 对的。 iOS 9.0 以后,系统新增加代理回调方法,详见文章更新。
        583a28b22745:@楼澜 这样就能走回调了
      • 潮人花钱不用钱:微信登录出现闪退提示" UMSocial----wxsession, Error: displayName error!"知道是什么原因吗
        iHTCboy:@胶片的味道 这个问题是你配置有错了,你在按文档一步步检查一下啊
      • 8e5adc8130c4:大神,我现在遇到一个问题,用友盟的新浪,微信,QQ分享都已经可以了,,可是同一个项目里面我用友盟的第三方登录,,只有QQ能成功获取到信息,,微信和新浪登录能调起界面,,可是微信一直处于正在登录的界面,,微博提示这个错误sso package or sign error,,大神能帮我理一理原因吗?
        iHTCboy:@不想写代码的码农 如果要同步登录,建议用share sdk吧,友盟分享还可以。
        暝色透寒月华浅:@不想写代码的码农 我也是这样,什么原因呀




      • 我唔知啊:我遇到个奇怪的问题,求解@iHTCboy
        使用QQ登录为例,手机没安装QQ可以获取所有信息,安装了QQ却拿不到信息,这会是什么原因?
      • defef388b4fa:还是不行啊!!!!为什么`????/求解答!!!! :sob:
        iHTCboy:解决了吗? iOS 9.0 以后,系统新增加代理回调方法,详见文章更新。
      • 着魔的毛豆:我也遇到这个问题 上述方法试了 还是不行 好烦啊
        iHTCboy:解决了吗? iOS 9.0 以后,系统新增加代理回调方法,详见文章更新。
      • __KenLu:还是不行,授权失败 - 服务器繁忙,授权失败,请稍后再试!大神怎么解决
      • Pusswzy:谢谢你
      • 5bb1efc3ccb2:楼主 ,我的方法和你一样 ,头像 用户名什么的都可以获取 就openid (uid) 是空的
      • 什么的黑夜:我加了但是没有效果,大神求解决啊
        iHTCboy:解决了吗? iOS 9.0 以后,系统新增加代理回调方法,详见文章更新。
      • 那已逝的时光:我加了,但是没有效果,能帮我看下什么问题么?
        iHTCboy:解决了吗? iOS 9.0 以后,系统新增加代理回调方法,详见文章更新。
      • 394c951d12bd:还是不走回调block啊
        iHTCboy:解决了吗? iOS 9.0 以后,系统新增加代理回调方法,详见文章更新。
      • 一个人的阳光:怎么获取性别
      • 6198cd2a505c:获取的用户信息昵称,图像,唯独uid为空
        5bb1efc3ccb2:友盟现在只到5.0啊 ,我也是 其余的都有数据 ,就uid是"",空的
        一铭_:@6198cd2a505c 换5.0.1
      • 00ef1255545d:大神求救啊,点击微信登录之后返回我的应用获取不到access token,控制台提示‘You must set accessToken! ’
      • puppySweet:由于改名字,原来的umenykey不给用了,我用公司邮箱申请友盟账号,重新生成umenykey。第三方登陆为啥不行了……如下;微信成功授权但是!返回空..数据!我换回原来的umenykey就拿到所有数据!大神求解!
        曹宇___:@puppySweet 我也遇到同样问题 请问解决了吗
      • 6492983b777a:如果我想在授权登录成功之后跳转到应用的其他界面,应该怎么写?
      • PetitBread:原来是这个问题,我擦。。加了之后解决了。。3Q
        什么的黑夜:@PetitBread 我的怎么不行

        能给我看看代码吗

      本文标题:友盟iOS微信登陆没有回调的原因

      本文链接:https://www.haomeiwen.com/subject/eocbqttx.html