首頁  >  文章  >  後端開發  >  步驟詳解PHP實作微信登入功能

步驟詳解PHP實作微信登入功能

PHPz
PHPz原創
2023-04-04 10:40:532575瀏覽

近年來,隨著社群網路的興起和智慧型手機的普及,微信成為了人們日常生活中不可或缺的一部分。在網路應用的領域,實現微信登入功能是非常必要的一部分。眾所周知,微信的授權機制採用OAuth 2.0授權機制,這為我們的微信登入功能實作帶來了很大的便利。以下我們將詳細介紹如何透過PHP語言來實現微信登入功能。

一、微信開發平台配置

  1. 登入[微信開放平台](https://open.weixin.qq.com)註冊帳號,註冊完成後,進入微信開放平台管理中心。
  2. 點選中心頁面的「管理公眾號」選單,輸入需要接取的微信公眾號資訊。
  3. 經過微信開放平台的認證之後,我們需要取得微信開放平台的AppID和AppSecret,記錄在登入程式碼中。登入[微信開放平台](https://open.weixin.qq.com),進入管理中心,選擇“行動應用程式”,然後選擇“新增行動應用程式”。
  4. 填寫行動應用程式基本資訊並提交審核,審核批准後即可獲得AppID和AppSecret。

二、PHP程式碼實作

  1. 建立微信登入連結
<?php
$appid = “your_appid”; //appid
$redirect_uri = urlencode(&#39;http://yourdomain.com/login.php&#39;); //登录成功回调网址,请确保此地址跟公众号设置的授权回调页面路径一致。
$scope = &#39;snsapi_userinfo&#39;; //snsapi_base 或 snsapi_userinfo
$url = &#39;https://open.weixin.qq.com/connect/oauth2/authorize?appid=&#39; . $appid . &#39;&redirect_uri=&#39; . $redirect_uri . &#39;&response_type=code&scope=&#39; . $scope . &#39;&state=STATE#wechat_redirect&#39;;
header(&#39;Location:&#39; . $url);
exit;
?>

在上述程式碼中,我們需要填入$appid、$redirect_uri和$scope參數。其中,$appid為微信開放平台分配給我們的AppID;$redirect_uri為用戶授權後的回調網址,需要跟公眾號設定的授權回調頁面一致;$scope分為snsapi_base和snsapi_userinfo,前者只能獲得用戶的openid ,而後者可獲得使用者的基本資訊。

  1. 取得access_token和openid
<?php
$appid = &#39;your_appid&#39;; //appid
$secret = &#39;your_appsecret&#39;; //appsecret
$code = $_GET[&#39;code&#39;]; //网页授权code
$access_token_url = &#39;https://api.weixin.qq.com/sns/oauth2/access_token?appid=&#39; . $appid . &#39;&secret=&#39; . $secret . &#39;&code=&#39; . $code . &#39;&grant_type=authorization_code&#39;; //获取access_token和openid的链接
$access_token = file_get_contents($access_token_url);
$access_token_arr = json_decode($access_token, true); //将返回的json字符串转为数组
?>

在這段程式碼中,我們透過用戶成功授權後回傳的code,再將code傳給微信伺服器,從而取得access_token和openid。

  1. 獲取用戶基本資訊
<?php
$access_token = $access_token_arr[&#39;access_token&#39;];
$openid = $access_token_arr[&#39;openid&#39;];
$user_info_url = &#39;https://api.weixin.qq.com/sns/userinfo?access_token=&#39; . $access_token . &#39;&openid=&#39; . $openid . &#39;&lang=zh_CN&#39;; //获取用户信息的链接
$user_info = file_get_contents($user_info_url);
$user_info_arr = json_decode($user_info, true); //将返回的json字符串转为数组
?>

在這段程式碼中,我們透過access_token和openid去獲取用戶的基本信息,如用戶暱稱、性別、城市等。要注意的是,在取得使用者基本資訊之前,我們需要確保使用者已經授權scope為snsapi_userinfo的權限。

  1. 完整的登入範例程式碼
<?php
if (!isset($_GET[&#39;code&#39;]) || empty($_GET[&#39;code&#39;])) {
    //第一步:用户同意授权,获取code
    $appid = &#39;your_appid&#39;;
    $redirect_uri = urlencode(&#39;http://yourdomain.com/login.php&#39;);
    $scope = &#39;snsapi_userinfo&#39;;
    $url = &#39;https://open.weixin.qq.com/connect/oauth2/authorize?appid=&#39; . $appid . &#39;&redirect_uri=&#39; . $redirect_uri . &#39;&response_type=code&scope=&#39; . $scope . &#39;&state=STATE#wechat_redirect&#39;;
    header(&#39;Location:&#39; . $url);
    exit;
} else {
    //第二步:通过code换取网页授权access_token以及openid,再获取用户信息
    $appid = &#39;your_appid&#39;;
    $secret = &#39;your_appsecret&#39;;
    $code = $_GET[&#39;code&#39;];
    $access_token_url = &#39;https://api.weixin.qq.com/sns/oauth2/access_token?appid=&#39; . $appid . &#39;&secret=&#39; . $secret . &#39;&code=&#39; . $code . &#39;&grant_type=authorization_code&#39;;
    $access_token = file_get_contents($access_token_url);
    $access_token_arr = json_decode($access_token, true);
    $access_token = $access_token_arr[&#39;access_token&#39;];
    $openid = $access_token_arr[&#39;openid&#39;];
    $user_info_url = &#39;https://api.weixin.qq.com/sns/userinfo?access_token=&#39; . $access_token . &#39;&openid=&#39; . $openid . &#39;&lang=zh_CN&#39;;
    $user_info = file_get_contents($user_info_url);
    $user_info_arr = json_decode($user_info, true);

    //TODO:在这里可以将用户信息存入数据库,供之后使用
    //......
}
?>

三、小結

如上所述,透過簡單的幾步,我們就可以使用PHP語言來實作微信登入功能。本文只介紹了最基本的微信登入實作方法,實際運用中還有更多需要注意的問題,例如使用者權限的判斷、授權的有效期限等等。希望本文能對需要實現微信登入的開發者們提供一些幫助。

以上是步驟詳解PHP實作微信登入功能的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn