xu-li / cordova-plugin-wechat

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

How to get userid, user name after using Wechat.auth #33

Closed acylum closed 9 years ago

acylum commented 9 years ago

How would you get the user's wechatID and name as part of the response after using Wechat.auth()

For example, after using Wechat.auth(scope, function (response) {

          //How can I get response to return userid and username?

console.log(response.userid,response.username); }

xu-li commented 9 years ago

@acylum It's based on OAuth 2, so you can get the access token and then request for user id and user name. A similar example would be 网页授权获取用户基本信息.

// 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);
        });
    });
});
acylum commented 9 years ago

Great! Thanks! My next question - let's say I use the webAPI to refresh the access token (i.e. https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=APPID&grant_type=refresh_token&refresh_token=REFRESH_TOKEN).

How would I make your cordova-wechat plugin use this refreshed access-token (to do posts, etc,..)?

xu-li commented 9 years ago

@acylum Refresh token will be available in the access token response. See 网页授权获取用户基本信息.

YuyangHYY commented 7 years ago
[11:27:43]  tslint: src/app/app.component.ts, line: 169
            'accessToken' is declared but never used.

     L168:  // you should save access token response somewhere, e.g. cookies, local storage, etc.
     L169:  var accessToken = accessTokenResponse.access_token;
     L170:  var openId = accessTokenResponse.openid;

[11:27:43]  tslint: src/app/app.component.ts, line: 170
            'openId' is declared but never used.

     L169:  var accessToken = accessTokenResponse.access_token;
     L170:  var openId = accessTokenResponse.openid;
     L171:  // get user information

When I run it in web browser with ionic serve -l , this warning coming out. And I am using ionic3

ionic info

cli packages: (/usr/local/lib/node_modules)

    @ionic/cli-utils  : 1.16.0
    ionic (Ionic CLI) : 3.16.0

global packages:

    cordova (Cordova CLI) : 7.0.1

local packages:

    @ionic/app-scripts : 2.1.3
    Cordova Platforms  : android 6.3.0 ios 4.4.0
    Ionic Framework    : ionic-angular 3.6.0

System:

    ios-deploy : 1.9.2
    Node       : v6.11.3
    npm        : 3.10.10
    OS         : macOS Sierra
    Xcode      : Xcode 8.3.3 Build version 8E3004b

Environment Variables:

    ANDROID_HOME : not set

Misc:

    backend : pro