WeChat OAuth ログイン SDK
次の設定をcomposer.json
ファイルに追加します。
"henter/wechat-oauth" : " dev-master "
次に、Composer を使用して SDK をインストールします。
composer install
Packagist が失敗するか利用できず、SDK をインストールできない場合は、Satis または Artifact を使用して SDK をローカルにインストールできます。詳細については、Composer ドキュメントの「リポジトリ」を参照してください。
lib/Henter/WeChat
プロジェクト ディレクトリにコピーし、 require "/path/to/sdk/OAuth.php"
Composer を使用してインストールする場合は、次のコードを使用して自動的にロードできます。
require ' vendor/autoload.php ' ;
SDK はグローバル名前空間の下にあります。
use Henter WeChat OAuth
OAuth
インスタンス化して初期化を完了する
$ oauth = new Henter WeChat OAuth ( $ appid , $ secret );
$appid
と$secret
、WeChat オープン プラットフォーム アプリケーションの一意の ID と秘密キー AppSecret です。
$ oauth = new Henter WeChat OAuth ( $ appid , $ secret );
$ callback_url = ' http://your_site.com/your_callback_url ' ;
$ url = $ oauth -> getAuthorizeURL ( $ callback_url );
$url
にリダイレクトします。ユーザーが認可を許可すると、 code
とstate
パラメーターを使用して$callback_url
にリダイレクトされます (サンプル コードはstate
パラメーターを渡しません)。
デフォルトの認証アドレスは、WeChat スキャン QR コード ページにジャンプします (PC に適用)。この方法は、ユーザーが WeChat 内の Web ページにアクセスして WeChat ログインをクリックする場合には適していません。 WeChat で使用する許可されたアドレスを取得するには、次の方法を使用する必要があります。
$ url = $ oauth -> getWeChatAuthorizeURL ( $ callback_url );
注: これは WeChat オープン プラットフォームのドキュメントには記載されていません (公式アカウント プラットフォームのドキュメントにのみ記載されています) が、テストではオープン プラットフォーム アプリケーションにも適用できることが判明しました。
code
パラメータを通じてaccess_token
取得する //获取code参数
$ code = $ _GET [ ' code ' ];
$ oauth = new Henter WeChat OAuth ( $ appid , $ secret );
if ( $ access_token = $ oauth -> getAccessToken ( ' code ' , $ code )){
$ refresh_token = $ oauth -> getRefreshToken ();
$ expires_in = $ oauth -> getExpiresIn ();
$ openid = $ oauth -> getOpenid ();
} else {
echo $ oauth -> error ();
}
取得が成功した場合、これら 4 つの値は後続のインターフェース呼び出しのために保存する必要があります。それ以外の場合は、 $oauth->error()
を通じてエラー情報が取得されます。
access_token
経由で API を呼び出す $ oauth = new Henter WeChat OAuth ( $ appid , $ secret , $ access_token );
または
$ oauth = new Henter WeChat OAuth ( $ appid , $ secret );
$ oauth -> setAccessToken ( $ access_token );
ユーザー情報を呼び出すには、 openid
渡す必要があります
$ userinfo = $ oauth -> api ( ' sns/userinfo ' , array ( ' openid ' => $ openid ));
このうちsns/userinfo
API タイプです。詳しくは WeChat API ドキュメントを参照してください。
refresh_token
経由でaccess_token
更新します $ oauth = new Henter WeChat OAuth ( $ appid , $ secret );
//以下两种方式一样
$ access_token = $ oauth -> getAccessToken ( ' token ' , $ refresh_token );
或
$ access_token = $ oauth -> refreshAccessToken ( $ refresh_token );
現時点では、 $oauth->getRefreshToken()
を通じて新しいrefresh_token
取得できます。
この SDK には例外をスローする部分がありません。 $oauth->getAccessToken()
や$oauth->api()
などのメソッドを呼び出したときにfalse
が返された場合、エラー情報は$oauth->error()
を通じて取得されたことを意味します。 $oauth->error()
使用するため、エラーを処理するためにtry {} catch {}
を使用する必要はありません
MIT ライセンス (MIT) Copyright (c) 2014 Henter <[email protected]>
本ソフトウェアおよび関連ドキュメント ファイル (以下「ソフトウェア」) のコピーを入手した人には、使用、コピー、変更、マージする権利を含むがこれらに限定されない、制限なくソフトウェアを取り扱う許可がここに無償で与えられます。 、以下の条件を条件として、本ソフトウェアのコピーを出版、配布、サブライセンス、および/または販売すること、および本ソフトウェアが提供される人物にそれを許可すること。
上記の著作権表示およびこの許可通知は、ソフトウェアのすべてのコピーまたは主要部分に含まれるものとします。
このソフトウェアは、商品性、特定の目的への適合性、および著作権保持者がいかなる責任者にも責任を負うことを含め、明示的または黙示的なものを保証することなく、「現状のまま」提供されます。請求、損害賠償、その他契約行為、不法行為、その他を問わず、ソフトウェアまたはソフトウェアの使用またはその他の取引に起因または関連して生じる責任。