ホームページ  >  記事  >  php教程  >  WeChat の三者間ログイン

WeChat の三者間ログイン

WBOY
WBOYオリジナル
2016-09-30 09:22:531486ブラウズ

ThinkPHP は WeChat の 3 者ログインを実装しています
小さなエピソードとしては、アプリがずっと前に WeChat の 3 者ログインを実装し、その後 PC の WeChat 3 者ログインが追加されたということです。ドキュメントには、unionid がさまざまなアプリケーションで統一されていると記載されています。同じアカウントですが、アプリは uid を使用します。その結果、PC が取得した UnionID が正しくなくなり、データの統合の問題を探すのに 1 日が無駄になりました。残りの問題は解決されました。アプリと PC を作成する友人は、WeChat の 3 方向ログインに注意してください。アプリと PC の両方に UnionID が必要です。それでは、PC で 3 者間の WeChat ログインを統合する方法を説明しましょう:

1. 申請時に入力する情報は、メイン Web サイト情報登録フォームのスキャンしたコピーを顧客が提供し、残りは自分で入力します。承認されたコールバック ドメインには、ファーストレベル ドメイン名を記述する必要があることに注意してください。呼び出し時には、recudirt_url と一致している必要があります

インターフェースを呼び出す手順

(1):

小さな WeChat アイコンが WeChat ログイン リンク (a タグ) であり、href がこの値であることに注意してください (公式ドキュメント No. 1 ストア WeChat ログイン)

https://open.weixin.qq.com/connect/qrconnect?appid=wxbdc5610cc59c1631&redirect_uri=https://passport.yhd.com/wechat/callback.do&response_type=code&scope=snsapi_login&state=3d6be0a4035d839573b04816624a415e#wechat_redirect

(2) 上記のリンクは、access_tokenとopenidの値を交換するための媒体であるcodeパラメータを返します。その後、論理的に判断されます



if(isset($_GET['code'])&&$_GET['state'] =='3d6be0a4035d839573b04816624a415e') {

//呼び出されるメソッドはユーザーの個人情報を取得するものです

$res = $this->message_request($code);

}



パブリック関数 message_request($code){

//独自のものを変更します

$appid = "wx16a15XXXXXXXXX";

$appsecret = "fc4b2b999787cXXXXXXXXXXX";

//独自に変更してください

$url = "https://api.weixin.qq.com/sns/oauth2/access_token?appid=$appid&secret=$appsecret&code=$code&grant_type=authorization_code";

$output = $this->httpsRequest($url);

$jsoninfo = json_decode($output, true);

$openid = $jsoninfo["openid"];

$access_token = $jsoninfo['access_token'];

$url = "https://api.weixin.qq.com/sns/userinfo?access_token=$access_token&openid=$openid&lang=zh_CN";

$output = $this->httpsRequest($url);

$message = json_decode($output,true);

$メッセージを返します;

}

パブリック関数 httpsRequest($url,$data = null){

$curl =curl_init();

curl_setopt($curl, CURLOPT_URL, $url);

curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);

curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, FALSE);

if (!empty($data)){

curl_setopt($curl, CURLOPT_POST, 1);

curl_setopt($curl, CURLOPT_POSTFIELDS, $data);

}

curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

$output =curl_exec($curl);

curl_close($curl);

$output を返します;

}

重要:

access_token は、WeChat パブリック プラットフォームのユーザー認証ログインとは異なります。WeChat パブリック プラットフォームには 1 日の制限がありますが、オープン プラットフォームには制限がなく、アプリの情報を保持するために同時に生成する必要があります。同期中のユーザーと PC ユーザーには、["unionid"] が使用されます。これは、同じオープン プラットフォーム上のさまざまなアプリケーションに固有の ["unionid"] です。アプリと PC の両方でこれが必要です。
結果が得られました

array(10) { ["openid"] => string(28) "oD5XQwgVj1gLb3_zgjP72uDgESYk" ["nickname"] => string(6) "Liu Zhu" //ユーザーのニックネーム ["sex"] => 1) //性別 1: 男性 ["言語"] => string(5) "zh_CN" ["city"] => string(6) "南海" //地区 ["都道府県"] => (7) "天津" //省["国"] => string(2) "天津" //都市["headimgurl"] => string(129) "http://wx.qlogo.cn / mmopen/aQVS6rQD9yJTTHTcyb0AqLOQ3rBoyNL3CyEJleogBib53Y6xiaibZvfZ6quDApeKuPG10sCYKkDvPwkiayUj3dMXjNicOVkV73x1k/0" //ユーザーのアバター ["privilege"] => array(0) { } ["unionid"] > string( 28) "o2VJ4xEUwd51_7F2bhisYBhF3fVk" //Unionid アプリと PC 情報の一貫性が維持される ベンチマーク}

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。