首頁 後端開發 php教程 php取得微信openid

php取得微信openid

Oct 10, 2019 pm 02:24 PM
openid php

使用微信接口,無論是自動登入還是微信支付我們首先需要獲取的就是openid,獲取openid的方式有兩種,一種是在關注的時候進行獲取,這種訂閱號就可以獲取的到,第二種是透過網頁授權獲取,這種獲取需要的是認證服務號。

今天我要說的是第二個網頁授權取得openid。下面是我寫的一個關於取得openid的類別

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

<?php

/**

 * 微信授权相关接口

 *

 * @link http://www.phpddt.com

 */

class Wchat

{

      private $app_id = 'wx444444444444';

      private $app_secret = '77777777';

     private $state='aaaa';

   /**

     * 获取微信授权链接

     *

     * @param string $redirect_uri 跳转地址

     * @param mixed $state 参数

     */

    public function get_authorize_url($redirect_uri = '', $state = '')

    {

        $redirect_uri = urlencode($redirect_uri);

        return "https://open.weixin.qq.com/connect/oauth2/authorize?appid={$this->app_id}&redirect_uri={$redirect_uri}&response_type=code&scope=snsapi_userinfo&state={$state}#wechat_redirect";

    }

     /**

     * 获取微信openid

     */

    public function getOpenid($turl)

    {

        if (!isset($_GET['code'])){

            //触发微信返回code码

             

             $url=$this->get_authorize_url($turl, $this->state);

             

            Header("Location: $url");

            exit();

        } else {

            //获取code码,以获取openid

            $code = $_GET['code'];

            $access_info = $this->get_access_token($code);

            return $access_info;

        }

         

    }

    /**

     * 获取授权token网页授权

     *

     * @param string $code 通过get_authorize_url获取到的code

     */

    public function get_access_token($code = '')

    {

      $appid=$this->app_id;

      $appsecret=$this->app_secret;

       

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

        //echo $token_url;

        $token_data = $this->http($token_url);

       // var_dump( $token_data);

        if($token_data[0] == 200)

        {

            $ar=json_decode($token_data[1], TRUE);

            return $ar;

        }

         

        return $token_data[1];

    }

     

     

    public function http($url, $method='', $postfields = null, $headers = array(), $debug = false)

    {

        $ci = curl_init();

        /* Curl settings */

        curl_setopt($ci, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1);

        curl_setopt($ci, CURLOPT_CONNECTTIMEOUT, 30);

        curl_setopt($ci, CURLOPT_TIMEOUT, 30);

        curl_setopt($ci, CURLOPT_RETURNTRANSFER, true);

  

        switch ($method) {

            case 'POST':

                curl_setopt($ci, CURLOPT_POST, true);

                if (!empty($postfields)) {

                    curl_setopt($ci, CURLOPT_POSTFIELDS, $postfields);

                    $this->postdata = $postfields;

                }

                break;

        }

        curl_setopt($ci, CURLOPT_URL, $url);

        curl_setopt($ci, CURLOPT_HTTPHEADER, $headers);

        curl_setopt($ci, CURLINFO_HEADER_OUT, true);

  

        $response = curl_exec($ci);

        $http_code = curl_getinfo($ci, CURLINFO_HTTP_CODE);

  

        if ($debug) {

            echo "=====post data======\r\n";

            var_dump($postfields);

  

            echo '=====info=====' . "\r\n";

            print_r(curl_getinfo($ci));

  

            echo '=====$response=====' . "\r\n";

            print_r($response);

        }

        curl_close($ci);

        return array($http_code, $response);

    }

  

}

?>

登入後複製

getOpenid($turl)這個方法就是取得openid的方法。前端呼叫程式碼如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

$openid=isset($_COOKIE['openid'])?$_COOKIE['openid']:'';

   

      if(empty($openid))

      {

          $wchat=new wchat();

          $t_url='http://'.$_SERVER['HTTP_HOST'].'/user.php?act=register';

           

          $info=$wchat->getOpenid($t_url);

           

          if($info){

               $openid=$info['openid'];

            setcookie('openid',$openid,time()+86400*30);   

               

          }

           

      }

登入後複製

以上就是我總結的取得openid的方法啦。

以上是php取得微信openid的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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

熱門文章

倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章

倉庫:如何復興隊友
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒險:如何獲得巨型種子
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱門文章標籤

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

適用於 Ubuntu 和 Debian 的 PHP 8.4 安裝和升級指南 適用於 Ubuntu 和 Debian 的 PHP 8.4 安裝和升級指南 Dec 24, 2024 pm 04:42 PM

適用於 Ubuntu 和 Debian 的 PHP 8.4 安裝和升級指南

CakePHP 日期和時間 CakePHP 日期和時間 Sep 10, 2024 pm 05:27 PM

CakePHP 日期和時間

CakePHP 檔案上傳 CakePHP 檔案上傳 Sep 10, 2024 pm 05:27 PM

CakePHP 檔案上傳

CakePHP 路由 CakePHP 路由 Sep 10, 2024 pm 05:25 PM

CakePHP 路由

CakePHP 專案配置 CakePHP 專案配置 Sep 10, 2024 pm 05:25 PM

CakePHP 專案配置

討論 CakePHP 討論 CakePHP Sep 10, 2024 pm 05:28 PM

討論 CakePHP

CakePHP 快速指南 CakePHP 快速指南 Sep 10, 2024 pm 05:27 PM

CakePHP 快速指南

如何設定 Visual Studio Code (VS Code) 進行 PHP 開發 如何設定 Visual Studio Code (VS Code) 進行 PHP 開發 Dec 20, 2024 am 11:31 AM

如何設定 Visual Studio Code (VS Code) 進行 PHP 開發

See all articles