xu-li / cordova-plugin-wechat

A cordova plugin, a JS version of Wechat SDK
1.22k stars 508 forks source link

【已解决】ionic3 如何拿到微信用户头像,用户名等信息 #379

Closed YuyangHYY closed 6 years ago

smallg commented 7 years ago

需要签名,然后调这个插件

YuyangHYY commented 7 years ago

您好 这个插件我有调用 而且已经成功了

wechatLogin(){
    let scope = "snsapi_userinfo",
      state = "_" + (+new Date());
    Wechat.auth(scope, state, function (response) {
      // you may use response.code to get the access token.
      alert(JSON.stringify(response));
    }, function (reason) {
      alert("Failed: " + reason);
    });
  }

手机上已经得到返回给我的json格式的code等信息, 我现在想要根着官方文档提取第二部的access_token和最后一步的提取用户信息 但是我无法提取 ,这是我的代码和手机上返回给我的错误信息。 有两个代码版本 代码1:

wechatLogin(){
    let scope = "snsapi_userinfo",
    state = "_" + (+new Date());
    Wechat.auth(scope, state, function (response) {
      //alert(JSON.stringify(response));
      var appId = "我的appID";
      var appSecret = "我的appSecret";
      //var code = JSON.stringify(response.code);
      Wechat.auth('https://api.weixin.qq.com/sns/oauth2/access_token?appid=' + appId + '&secret=' + appSecret + '&code=' + response.code + '&grant_type=authorization_code', function (accessTokenResponse) {
        alert(JSON.stringify(accessTokenResponse));
          // you should save access token response somewhere, e.g. cookies, local storage, etc.
          var accessToken = accessTokenResponse.access_token;
          var openId = accessTokenResponse.openid;
          // get user information
          Wechat.auth('https://api.weixin.qq.com/sns/userinfo?access_token=' + accessToken + '&openid=' + openId + '&lang=zh_CN', function (userInfoResponse) {
              console.log(userInfoResponse);
          });
      });
    });
  }

代码1返回在手机上的错误信息截图: 33163894-7c40c6ca-d06b-11e7-8432-b3e34c8bc2c7

代码版本2: 来源

// Not tested.
Wechat.auth(scope, function (response) {
    // $ = jQuery
    var appId = "YOUR_APP_ID";
    var appSecret = "YOUR_APP_SECRET";
    $.get('https://api.weixin.qq.com/sns/oauth2/access_token?appid=' + appId + '&secret=' + appSecret + '&code=' + response.code + '&grant_type=authorization_code', function (accessTokenResponse) {
        // you should save access token response somewhere, e.g. cookies, local storage, etc.
        var accessToken = accessTokenResponse.access_token;
        var openId = accessTokenResponse.openid;

        // get user information
        $.get("https://api.weixin.qq.com/sns/userinfo?access_token=' + accessToken + '&openid=' + openId + '&lang=zh_CN", function (userInfoResponse) {
            console.log(userInfoResponse);
        });
    });
});

我用的是ionic3 typescript不识别JQ,我安装npm install --save @types/jquery ,使用了$之后xcode log显示了下面的error:

2017-11-27 14:58:06.145655+0800 民安-马来西亚[314:25807] THREAD WARNING: ['Wechat'] took '38.095947' ms. Plugin should use a background thread. 2017-11-27 14:58:07.408589+0800 民安-马来西亚[314:25807] FB handle url: wxec56aa94e0b75717://oauth?code=0117fL3W0pbitV1ANj5W0v7A3W07fL3j&state=_1511765886066 2017-11-27 14:58:07.451633+0800 民安-马来西亚[314:25807] Error in Success callbackId: Wechat552311291 : ReferenceError: Can't find variable: $

现在不知道要怎样提取用户信息在手机上了,在网站上测试过了都没问题,不知道为什么会在手机上出现问题,而且代码1出现的“公众号”的问题我很奇怪,我的appid等信息都是从微信开放平台上提取的,不是微信公众号。

smallg commented 6 years ago

你检查下公众号开发平台配置这些没有,还有公众号平台的appid和你应用里的一致不

YuyangHYY commented 6 years ago

我检查了 不一样的, 可是有什么关联么? 一个是微信开放平台 一个是微信公众号

baixiaohuan commented 6 years ago

您好,我现在遇到了和您一样的问题,能请教一下您的问题是怎么解决了吗

YuyangHYY commented 6 years ago

@baixiaohuan 解决了已经 需要了解的话可以加我微信:544612210