豆瓣的账号登录及PHP api操作
豆瓣 的账号登录及api操作,使用oauth 2.0
官方提供的sdk都太过庞大,这是我自己简化的,提供简单的账号登录、获取个人信息、发布分享等功能,如果需要其他功能可以根据官方的api文档自行添加
[文件] douban.php
01 |
02 | /** |
03 | * PHP Library for douban.com |
04 | * |
05 | * @author php100 (http://www.php100.com/) |
06 | */ |
07 | class doubanPHP |
08 | { |
09 | function __construct($client_id, $client_secret, $access_token=NULL){ |
10 | $this->client_id=$client_id; |
11 | $this->client_secret=$client_secret; |
12 | $this->access_token=$access_token; |
13 | } |
14 |
15 | function login_url($callback_url, $scope=''){ |
16 | $params=array( |
17 | 'response_type'=>'code', |
18 | 'client_id'=>$this->client_id, |
19 | 'redirect_uri'=>$callback_url, |
20 | 'scope'=>$scope, |
21 | 'state'=>md5(time()) |
22 | ); |
23 | return 'https://www.douban.com/service/auth2/auth?'.http_build_query($params); |
24 | } |
25 |
26 | function access_token($callback_url, $code){ |
27 | $params=array( |
28 | 'grant_type'=>'authorization_code', |
29 | 'code'=>$code, |
30 | 'client_id'=>$this->client_id, |
31 | 'client_secret'=>$this->client_secret, |
32 | 'redirect_uri'=>$callback_url |
33 | ); |
34 | $url='https://www.douban.com/service/auth2/token'; |
35 | return $this->http($url, http_build_query($params), 'POST'); |
36 | } |
37 |
38 | function access_token_refresh($callback_url, $refresh_token){ |
39 | $params=array( |
40 | 'grant_type'=>'refresh_token', |
41 | 'refresh_token'=>$refresh_token, |
42 | 'client_id'=>$this->client_id, |
43 | 'client_secret'=>$this->client_secret, |
44 | 'redirect_uri'=>$callback_url |
45 | ); |
46 | $url='https://www.douban.com/service/auth2/token'; |
47 | return $this->http($url, http_build_query($params), 'POST'); |
48 | } |
49 |
50 | function me(){ |
51 | $params=array(); |
52 | $url='https://api.douban.com/v2/user/~me'; |
53 | return $this->api($url, $params); |
54 | } |
55 |
56 | function share($text, $title, $url, $description='', $pic=''){ |
57 | $params=array( |
58 | 'text'=>$text, |
59 | 'rec_title'=>$title, |
60 | 'rec_url'=>$url, |
61 | 'rec_desc'=>$description, |
62 | 'rec_image'=>$pic |
63 | ); |
64 | $url='https://api.douban.com/shuo/v2/statuses/'; |
65 | return $this->api($url, $params, 'POST'); |
66 | } |
67 |
68 | function api($url, $params, $method='GET'){ |
69 | $headers[]="Authorization: Bearer ".$this->access_token; |
70 | if($method=='GET'){ |
71 | $result=$this->http($url.'?'.http_build_query($params), '', 'GET',$headers); |
72 | }else{ |
73 | $result=$this->http($url, http_build_query($params), 'POST', $headers); |
74 | } |
75 | return $result; |
76 | } |
77 |
78 | function http($url, $postfields='', $method='GET', $headers=array()){ |
79 | $ci=curl_init(); |
80 | curl_setopt($ci, CURLOPT_SSL_VERIFYPEER, FALSE); |
81 | curl_setopt($ci, CURLOPT_RETURNTRANSFER, 1); |
82 | curl_setopt($ci, CURLOPT_CONNECTTIMEOUT, 30); |
83 | curl_setopt($ci, CURLOPT_TIMEOUT, 30); |
84 | if($method=='POST'){ |
85 | curl_setopt($ci, CURLOPT_POST, TRUE); |
86 | if($postfields!='')curl_setopt($ci, CURLOPT_POSTFIELDS, $postfields); |
87 | } |
88 | $headers[]="User-Agent: doubanPHP(piscdong.com)"; |
89 | curl_setopt($ci, CURLOPT_HTTPHEADER, $headers); |
90 | curl_setopt($ci, CURLOPT_URL, $url); |
91 | $response=curl_exec($ci); |
92 | curl_close($ci); |
93 | $json_r=array(); |
94 | if($response!='')$json_r=json_decode($response, true); |
95 | return $json_r; |
96 | } |
97 | } |
[文件] config.php
1 |
2 | //配置文件 |
3 | header('Content-Type: text/html; charset=UTF-8'); |
4 |
5 | $douban_k=''; //豆瓣应用API Key |
6 | $douban_s=''; //豆瓣应用Secret |
7 | $callback_url='http://yoururl/callback.php'; //授权回调网址 |
8 | $scope='douban_basic_common,shuo_basic_w'; //权限列表,具体权限请查看官方的api文档 |
9 | ?> |
[文件] index.php
01 |
02 | session_start(); |
03 | require_once('config.php'); |
04 | require_once('douban.php'); |
05 |
06 | $douban_t=isset($_SESSION['douban_t'])?$_SESSION['douban_t']:''; |
07 |
08 | //检查是否已登录 |
09 | if($douban_t!=''){ |
10 | $douban=new doubanPHP($douban_k, $douban_s, $douban_t); |
11 |
12 | //获取登录用户信息 |
13 | $result=$douban->me(); |
14 | var_dump($result); |
15 |
16 | /** |
17 | //access token到期后使用refresh token刷新access token |
18 | $result=$douban->access_token_refresh($callback_url, $_SESSION['douban_r']); |
19 | var_dump($result); |
20 | **/ |
21 |
22 | /** |
23 | //发布分享 |
24 | $text='分享内容'; |
25 | $title='分享标题'; |
26 | $url='http://www.oschina.net/'; |
27 | $result=$douban->share($text, $title, $url); |
28 | var_dump($result); |
29 | **/ |
30 |
31 | }else{ |
32 | //生成登录链接 |
33 | $douban=new doubanPHP($douban_k, $douban_s); |
34 | $login_url=$douban->login_url($callback_url, $scope); |
35 | echo '点击进入授权页面'; |
36 | } |
37 | ?> |
[文件] callback.php
01 |
02 | //授权回调页面,即配置文件中的$callback_url |
03 | session_start(); |
04 | require_once('config.php'); |
05 | require_once('douban.php'); |
06 |
07 | if(isset($_GET['code']) && $_GET['code']!=''){ |
08 | $douban=new doubanPHP($douban_k, $douban_s); |
09 | $result=$douban->access_token($callback_url, $_GET['code']); |
10 | } |
11 | if(isset($result['access_token']) && $result['access_token']!=''){ |
12 |
echo '授权完成,请记录 access token: refresh token:'; |
13 |
14 | //保存登录信息,此示例中使用session保存 |
15 | $_SESSION['douban_t']=$result['access_token']; //access token |
16 | $_SESSION['douban_r']=$result['refresh_token']; //refresh token |
17 | }else{ |
18 | echo '授权失败'; |
19 | } |
20 |
echo ' 返回'; |
21 | ?> |

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

“你的组织要求你更改PIN消息”将显示在登录屏幕上。当在使用基于组织的帐户设置的电脑上达到PIN过期限制时,就会发生这种情况,在该电脑上,他们可以控制个人设备。但是,如果您使用个人帐户设置了Windows,则理想情况下不应显示错误消息。虽然情况并非总是如此。大多数遇到错误的用户使用个人帐户报告。为什么我的组织要求我在Windows11上更改我的PIN?可能是您的帐户与组织相关联,您的主要方法应该是验证这一点。联系域管理员会有所帮助!此外,配置错误的本地策略设置或不正确的注册表项也可能导致错误。即

Windows11将清新优雅的设计带到了最前沿;现代界面允许您个性化和更改最精细的细节,例如窗口边框。在本指南中,我们将讨论分步说明,以帮助您在Windows操作系统中创建反映您的风格的环境。如何更改窗口边框设置?按+打开“设置”应用。WindowsI转到个性化,然后单击颜色设置。颜色更改窗口边框设置窗口11“宽度=”643“高度=”500“>找到在标题栏和窗口边框上显示强调色选项,然后切换它旁边的开关。若要在“开始”菜单和任务栏上显示主题色,请打开“在开始”菜单和任务栏上显示主题

默认情况下,Windows11上的标题栏颜色取决于您选择的深色/浅色主题。但是,您可以将其更改为所需的任何颜色。在本指南中,我们将讨论三种方法的分步说明,以更改它并个性化您的桌面体验,使其具有视觉吸引力。是否可以更改活动和非活动窗口的标题栏颜色?是的,您可以使用“设置”应用更改活动窗口的标题栏颜色,也可以使用注册表编辑器更改非活动窗口的标题栏颜色。若要了解这些步骤,请转到下一部分。如何在Windows11中更改标题栏的颜色?1.使用“设置”应用按+打开设置窗口。WindowsI前往“个性化”,然

您是否在Windows安装程序页面上看到“出现问题”以及“OOBELANGUAGE”语句?Windows的安装有时会因此类错误而停止。OOBE表示开箱即用的体验。正如错误提示所表示的那样,这是与OOBE语言选择相关的问题。没有什么可担心的,你可以通过OOBE屏幕本身的漂亮注册表编辑来解决这个问题。快速修复–1.单击OOBE应用底部的“重试”按钮。这将继续进行该过程,而不会再打嗝。2.使用电源按钮强制关闭系统。系统重新启动后,OOBE应继续。3.断开系统与互联网的连接。在脱机模式下完成OOBE的所

任务栏缩略图可能很有趣,但它们也可能分散注意力或烦人。考虑到您将鼠标悬停在该区域的频率,您可能无意中关闭了重要窗口几次。另一个缺点是它使用更多的系统资源,因此,如果您一直在寻找一种提高资源效率的方法,我们将向您展示如何禁用它。不过,如果您的硬件规格可以处理它并且您喜欢预览版,则可以启用它。如何在Windows11中启用任务栏缩略图预览?1.使用“设置”应用点击键并单击设置。Windows单击系统,然后选择关于。点击高级系统设置。导航到“高级”选项卡,然后选择“性能”下的“设置”。在“视觉效果”选

在Windows11上的显示缩放方面,我们都有不同的偏好。有些人喜欢大图标,有些人喜欢小图标。但是,我们都同意拥有正确的缩放比例很重要。字体缩放不良或图像过度缩放可能是工作时真正的生产力杀手,因此您需要知道如何对其进行自定义以充分利用系统功能。自定义缩放的优点:对于难以阅读屏幕上的文本的人来说,这是一个有用的功能。它可以帮助您一次在屏幕上查看更多内容。您可以创建仅适用于某些监视器和应用程序的自定义扩展配置文件。可以帮助提高低端硬件的性能。它使您可以更好地控制屏幕上的内容。如何在Windows11

屏幕亮度是使用现代计算设备不可或缺的一部分,尤其是当您长时间注视屏幕时。它可以帮助您减轻眼睛疲劳,提高易读性,并轻松有效地查看内容。但是,根据您的设置,有时很难管理亮度,尤其是在具有新UI更改的Windows11上。如果您在调整亮度时遇到问题,以下是在Windows11上管理亮度的所有方法。如何在Windows11上更改亮度[10种方式解释]单显示器用户可以使用以下方法在Windows11上调整亮度。这包括使用单个显示器的台式机系统以及笔记本电脑。让我们开始吧。方法1:使用操作中心操作中心是访问

Windows上的激活过程有时会突然转向显示包含此错误代码0xc004f069的错误消息。虽然激活过程已经联机,但一些运行WindowsServer的旧系统可能会遇到此问题。通过这些初步检查,如果这些检查不能帮助您激活系统,请跳转到主要解决方案以解决问题。解决方法–关闭错误消息和激活窗口。然后,重新启动计算机。再次从头开始重试Windows激活过程。修复1–从终端激活从cmd终端激活WindowsServerEdition系统。阶段–1检查Windows服务器版本您必须检查您使用的是哪种类型的W
