ホームページ >バックエンド開発 >PHPチュートリアル >php QQ サードパーティ ログイン SDK プログラム コード_PHP チュートリアル
php QQ のサードパーティ ログイン SDK プログラム コードを書き直しました。公式のものでは褒められなかったので、別のものを書きました
主な理由は、QQ の PHP SDK は非常に貧弱に書かれていると考えたためであり、純粋に API の知識を普及するためでした。 . 手元にデプロイできるクラス ライブラリではありません。 。とにかく、私自身が書いたので、それを共有します。 。
これ以上何も言う必要はありません。コードに進んでください。
Qq_sdk.php
コードは以下の通りです | コードをコピー | ||||
/** * QQ 開発プラットフォーム SDK * 著者: 時々酔っ払い * ブログ: www.stutostu.com */
クラス Qq_sdk{
/ /APP パラメータを設定します private $app_id = あなたの APP ID; private $redirect = あなたのコールバックアドレス; function __construct() {
}
/** * [get_access_token access_token を取得] * @param [string] $code [ログイン後に返される $_GET['code']] * @return [array] [expires_in は有効期限、access_token は認証コード; 失敗するとエラーが返されます、error_description ] */ function get_access_token($code) { //Get access_token $token_url = 'https://graph.qq.com/ oauth2 .0/token?grant_type=authorization_code&' . 'client_id=' . $this->app_id . urlencode($this->redirect)// コールバック アドレス '&client_secret=' . $this->app_secret . $code; $token = array(); parse_str($this->_curl_get_content($token_url) 、$ TOKEN); RETURN $ TOKEN} ( 'https://graph.qq.com/oauth2.0/me?access_token=' . $token); if (strpos($str, “callback”) !== false) { $ lpos = strpos($str, “(”); $rpos = strrpos($str, “)”); $str = substr($str, $lpos + 1, $rpos – $lpos -1); ; } $user = json_decode($str, TRUE);
return $user;
/** * [get_open_id ユーザーの一意の ID、openid を取得します] * @param [文字列] $token [認証コード] * @return [配列] [成功した場合は client_id と openid を、失敗した場合は error_msg を返します] */ function get_user_info($token, $open_id) ) {
//アセンブリ URL $user_info_url = 'https://graph.qq.com/user/get_use r_info?'. $token .キー= ' . $this->app_id . '&openid=' $info ($this->_curl_get_content($user_info_url), TRUE) ; return $info; プライベート関数 _curl_get_content($url) { $ch =curl_init();急いで転送してください、本当です ; curl_setopt( $ch, CURLOPT_URL, $url); //タイムアウトを 3 秒に設定しますcurl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, 3); ;$result を返します。 使用方法: Web サイトにハイパーリンクを配置します。アドレスは次のとおりです: https://graph.qq.com/oauth2.0/authorize?response_type=code&client_id=your APP_ID&redirect_uri=your callback address コールバック アドレス内上記の qq_sdk を呼び出すだけです。 デモは次のとおりです:
|