[OAuth]ウィーチャットOAuthを使用してOpenIDを取得する
1792 ワード
1.ターゲットurlをredirectUrlとして、oAuthUrlを生成する
注:(1)任意のUrlとして使用できるわけではない
2.ターゲットurlページOpenID取得
(1)クエリーパラメータから取得
(3)このgetAccessTokenUrlが返すjson文字列を解析し,OpenIDを取得する.
注:(1)ターゲットurlでは、
string oAuthUrl = string.Format(
"https://open.weixin.qq.com/connect/oauth2/authorize?appid={0}&redirect_uri={1}&response_type=code&scope={2}&state={3}#wechat_redirect",
APPID,
HttpUtility.UrlEncode(redirectUrl),
SCOPE,
transmitData == null ? "" : HttpUtility.UrlEncode(transmitData)
);
注:(1)任意のUrlとして使用できるわけではない
redirectUrl
このUrlのドメイン名は、WeChatパブリックプラットフォーム管理ページで構成する必要がある:OAuth 2.0ページ権限、修正、権限コールバックページドメイン名.(2)WeChatのoAuthUrl
WeChatブラウザでのみ使用できる.(3)SCOPE = "snsapi_base"
ユーザ確認ボックスをポップアップせずにユーザ情報を取得することを示す.(4)transmitData
過去のパラメータを渡すことを示すredirectUrl
で使用可能Request["state"]
で入手可能.2.ターゲットurlページOpenID取得
(1)クエリーパラメータから取得
oAuthCode = Request["code"]
.(2)以下のように取得AccessToken
.string getAccessTokenUrl = string.Format(
"https://api.weixin.qq.com/sns/oauth2/access_token?appid={0}&secret={1}&code={2}&grant_type=authorization_code",
APPID,
APPSECRET,
oAuthCode
);
(3)このgetAccessTokenUrlが返すjson文字列を解析し,OpenIDを取得する.
public sealed class AccessToken
{
public string access_token { get; set; }
public long expires_in { get; set; }
public string refresh_token { get; set; }
public string openid { get; set; }
public string scope { get; set; }
}
注:(1)ターゲットurlでは、
oAuthCode
一度しか使用できません.そうしないと期限切れになります.「redirect_uri
」と表示されます.(2)ユーザーがアクセスoAuthUrl
APPID
、APPSECRET
という公衆番号に対応するOpenID
を入手できます.したがって、これoAuthUrl
をユーザーにクリックさせることもできるし、直接リダイレクトすることもできます.