Magicodes.WeiChat——OAuth 2.0を利用したWeChatユーザー情報の取得方法

Magicodes.WeiChatを使用することで、WeChatユーザーの情報を簡単に取得できます。OAuth 2.0を利用する前に、以下の手順を実行する必要があります:

1)開発者センターで【网页授权获取用户基本信息】を設定し、ポップアップした画面にルートドメイン(例:weichat.chinacloudsites.cn)を入力します。

2)メニューまたはリンクを設定します(「WeChatOAuth」機能を使用する場合は、この手順は省略可能です。ここでは原理の説明のみ行い、具体的な手順についてはステップ3を参照してください)。Magicodes.WeiChatはWeiChatController内で処理を行い、パス設定がより簡潔で簡単になります。例:http://weichat.chinacloudsites.cn/WeiChat/OAuth?redirectUrl=http://weichat.chinacloudsites.cn/WeChat/Test。ここでのredirectUrlはリダイレクト先のページアドレスです。Magicodes.WeiChatはWeChat OAuthリンクを自動生成し、エラー発生の可能性を大幅に削減します。生成されたリンクの例は以下の通りです:https://open.weixin.qq.com/connect/oauth2/authorize?appid=wx941100f605a8c3bd&redirect_uri=http%3A%2F%2Fweichat.chinacloudsites.cn%2FWeChat%2FTest&response_type=code&scope=snsapi_userinfo&state=weichat#wechat_redirect

3)ターゲットページでWeChatユーザー情報を取得できます。取得コードは以下の通りです:

// GET: WeChat/Test

[AllowAnonymous]

public ActionResult Index(string code)

{

if (string.IsNullOrEmpty(code))

{

return Content("承認が拒否されました!");

}

// codeを使ってaccess_tokenを取得

var result = OAuthApi.GetAccessToken(WeixinHelper.appId, WeixinHelper.appSecret, code);

if (result.errcode != ReturnCode.成功)

{

return Content("エラー:" + result.errmsg);

}

// フォローしている場合、詳細情報を取得

var userInfo = OAuthApi.GetUserInfo(result.access_token, result.openid);

return View(userInfo);

}

上記のプロセスは比較的複雑であるため、Magicodes.WeiChatはフィルタを提供し、より簡単にユーザー情報を取得できます。以下のコード例をご参照ください:

    [AllowAnonymous]
    public class SampleController : Controller
    {
        // GET: WeChat/Test
        [AllowAnonymous]
        [WeChatOAuth]
        public ActionResult Index()
        {
            return View(WeiChatApplicationContext.Current.WeiChatUser);
        }
    }

次に、Indexビューのコードは以下の通りです:

@model WeChatUser
@{
    ViewBag.Title = "Index";
    Layout = "~/Areas/WeChat/Views/Shared/_Layout.cshtml";
}
<h2>

以下にWeChatユーザー情報を表示します

:</h2>
```

```
<h2>

ニックネーム:

@Model.NickName</h2>
```

```
<h2>

都市:

@Model.City</h2>
```

表示結果は以下の通りです:

**注意:Actionに「WeChatOAuth」属性を追加する必要があります。その後、コード内でWeiChatApplicationContext.Current.WeiChatUserを使用してWeChatユーザー情報にアクセスできます。**

WeChatユーザー情報の内容は以下の通りです:

public class WeChatUser

{

    /// 
    /// ユーザーの識別子(現在の公式アカウントに対して一意)
    /// 
    [Key]
    [Display(Name = "OpenId")]
    public string OpenId { get; set; }

    /// 
    /// ユーザーがこの公式アカウントを購読しているかどうかの識別子
    /// 
    [Display(Name = "購読状態")]
    public bool Subscribe { get; set; }

    /// 
    /// ユーザーのニックネーム
    /// 
    [Display(Name = "ニックネーム")]
    public string NickName { get; set; }

    /// 
    /// ユーザーの性別(1:男性、2:女性、0:不明)
    /// 
    [Display(Name = "性別")]
    public int Sex { get; set; }

    /// 
    /// ユーザーが所在する都市
    /// 
    [Display(Name = "都市")]
    public string City { get; set; }

    /// 
    /// ユーザーが所在する国
    /// 
    [Display(Name = "国")]
    public string Country { get; set; }

    /// 
    /// ユーザーが所在する州
    /// 
    [Display(Name = "州")]
    public string Province { get; set; }

    /// 
    /// ユーザーの言語(簡体字中国語はzh_CN)
    /// 
    [Display(Name = "言語")]
    public string Language { get; set; }

    /// 
    /// ユーザーのアバター(最後の数値は正方形アバターサイズを表します(0、46、64、96、132から選択可能、0は640*640の正方形アバターを意味します)。ユーザーがアバターを持たない場合はこの項目は空です。ユーザーがアバターを変更すると、既存のアバターURLは無効になります。
    /// 
    [Display(Name = "アバター")]
    public string HeadImgUrl { get; set; }

    /// 
    /// ユーザーのフォロー時間(タイムスタンプ形式)。ユーザーが複数回フォローした場合は、最後のフォロー時間が使用されます。
    /// 
    [Display(Name = "フォロー時間")]
    public DateTime SubscribeTime { get; set; }

    /// 
    /// ユーザーが公式アカウントをWeChatオープンプラットフォームアカウントにバインドした場合のみ表示されるフィールド。詳細は「ユーザー個人情報の取得(UnionIDメカニズム)」を参照してください。
    /// 
    public string UnionId { get; set; }

    /// 
    /// 公式アカウント運営者によるユーザーへのメモ。公式アカウント運営者はWeChatパブリックプラットフォームのユーザー管理画面でユーザーにメモを追加できます。
    /// 
    [Display(Name = "メモ")]
    public string Remark { get; set; }

    /// 
    /// ユーザーが所属するグループID
    /// 
    public int GroupId { get; set; }
}

タグ: OAuth WeChat Magicodes.WeiChat .NET C#

7月4日 22:34 投稿