微博第三方登录 curl post传值 处理返回的json数据

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
$code $_GET['code'];
 
//-----登录要提交的表单数据---------------
        $vars['client_id'] = '。。。';  //Appkey
         $vars['client_secret'] = '。。。';  //app secret
         $vars['grant_type'] = 'authorization_code';
         $vars['code'] = $code;
         $vars['redirect_uri'] = '。。。。';   //回调地址
   //-------------------------------------
        $method_post = true;
        //登录提交的url地址(表单中的action的绝对地址)
         $url 'https://api.weibo.com/oauth2/access_token';
        //----------------------------
         $ch = curl_init();
        $params[CURLOPT_URL] = $url;    //请求url地址
        $params[CURLOPT_HEADER] = false; //是否返回响应头信息
        $params[CURLOPT_RETURNTRANSFER] = true; //是否将结果返回
        $params[CURLOPT_FOLLOWLOCATION] = true; //是否重定向
        $params[CURLOPT_USERAGENT] = 'Mozilla/5.0 (Windows NT 5.1; rv:9.0.1) Gecko/20100101 Firefox/9.0.1';
           
$postfields '';
        foreach ($vars as $key => $value){
            $postfields .= urlencode($key) . '=' . urlencode($value) . '&';
        }
         
        $params[CURLOPT_POST] = true;
        $params[CURLOPT_POSTFIELDS] = $postfields;
 
        curl_setopt_array($ch$params); //传入curl参数
        $content = curl_exec($ch); //执行       
/*
$obj = json_decode($content);
$token = $obj->{'access_token'};
*/
$arr = json_decode($content,true);
$token $arr['access_token'];
<br>curl_close($ch); //关闭连接

第三方登录   获取令牌时    post方式传值  用curl

返回的数据是json的格式:如下图

 

获取access_token值时,对json数据进行处理

首先保证返回的数据只是json数据,所以   

$params[CURLOPT_HEADER] = false; //是否返回响应头信息   设为false,不要响应头显示

其次,按对象处理

1
2
$obj = json_decode($content);
$token $obj->{'access_token'};

或者,按数组处理

1
2
$arr = json_decode($content,true);
$token $arr['access_token'];<br><br>最后,ok了
原文地址:https://www.cnblogs.com/georgelu/p/7066522.html