钥匙要点
- >该教程提供了有关如何创建由WordPress HTTP API供电的PHP类的分步指南,用于消费Twitter。这包括在Twitter的键和访问令牌的应用程序管理中心上创建一个应用程序,对PHP类编码以及使用OAuth Authentication向Twitter提出HTTP请求。
- > >教程强调正确配置OAuth并使用正确的API键避免部署错误的重要性。它还强调了确保Oauth代币以防止未经授权访问的必要
- 在以前的教程中,我们深入研究了WordPress HTTP API。我们甚至构建了以下插件,以演示其用法的真实示例:whois和社交数据小部件; WordPress登录,注册和评论的CATPCHA保护插件;和用于停止一次性电子邮件地址注册的插件。 在本教程中,我们将介绍Oauth的世界,Twitter如何使用它来授权HTTP请求向其API授权,最后构建由WordPress HTTP API供电的PHP类,该插件可以在消费Twitter时利用Twitter时会利用。
- > oauth
> oauth是一种身份验证协议,提供了一种简单,更安全,更安全的方式来发布和与受保护的数据进行交互。它允许用户批准应用程序代表他们行动而无需共享密码。
编码PHP类
>关于如何使用OAuth身份验证进行http请求的分解,将在我们编码PHP类时解释。
>首先,前往Twitter的应用程序管理中心;创建一个应用程序以获取您的键并访问令牌。>逐步指南创建Twitter应用程序和获取API键,请访问hostoople.com
>
创建PHP类,并包括将存储各种参数的属性。这些在下面概述了。
<span>class Twitter_API_WordPress {
</span>
<span>/** <span>@var <span>string</span> OAuth access token */</span>
</span> <span>private $oauth_access_token;
</span>
<span>/** <span>@var <span>string</span> OAuth access token secrete */</span>
</span> <span>private $oauth_access_token_secret;
</span>
<span>/** <span>@var <span>string</span> Consumer key */</span>
</span> <span>private $consumer_key;
</span>
<span>/** <span>@var <span>string</span> consumer secret */</span>
</span> <span>private $consumer_secret;
</span>
<span>/** <span>@var <span>array</span> POST parameters */</span>
</span> <span>private $post_fields;
</span>
<span>/** <span>@var <span>string</span> GET parameters */</span>
</span> <span>private $get_field;
</span>
<span>/** <span>@var <span>array</span> OAuth credentials */</span>
</span> <span>private $oauth_details;
</span>
<span>/** <span>@var <span>string</span> Twitter's request URL */</span>
</span> <span>private $request_url;
</span>
<span>/** <span>@var <span>string</span> Request method or HTTP verb */</span>
</span> <span>private $request_method;</span>
构造函数将接受您的Twitter应用程序消费者(或API)密钥和秘密的数组,以及访问令牌和访问令牌秘密并将其保存到各自的属性中。
<span>/** Class constructor */ </span> <span>public function __construct( $settings ) { </span> <span>if ( ! isset( $settings['oauth_access_token'] ) </span> <span>|| ! isset( $settings['oauth_access_token_secret'] ) </span> <span>|| ! isset( $settings['consumer_key'] ) </span> <span>|| ! isset( $settings['consumer_secret'] ) </span> <span>) { </span> <span>return new WP_Error( 'twitter_param_incomplete', 'Make sure you are passing in the correct parameters' ); </span> <span>} </span> <span>$this->oauth_access_token = $settings['oauth_access_token']; </span> <span>$this->oauth_access_token_secret = $settings['oauth_access_token_secret']; </span> <span>$this->consumer_key = $settings['consumer_key']; </span> <span>$this->consumer_secret = $settings['consumer_secret']; </span> <span>}</span>接下来是将接受HTTP请求的GET或发布参数的方法。
<span>/** </span><span> * Store the POST parameters </span><span> * </span><span> * <span>@param <span>array</span> $array array of POST parameters </span></span><span> * </span><span> * <span>@return $this </span></span><span> */ </span> <span>public function set_post_fields( array $array ) { </span> <span>$this->post_fields = $array; </span> <span>return $this; </span> <span>} </span> <span>/** </span><span> * Store the GET parameters </span><span> * </span><span> * <span>@param $string </span></span><span> * </span><span> * <span>@return $this </span></span><span> */ </span> <span>public function set_get_field( $string ) { </span> <span>$this->getfield = $string; </span> <span>return $this; </span> <span>}</span>>私有方法_build_signature_base_string()接受以下参数以创建签名基础字符串:请求URL,请求方法或HTTP动词和OAuth凭据(消费者密钥和秘密和秘密; access and; access token and秘密;以及get参数;以及get参数;这是一个get请求)。
<span>/** </span><span> * Create a signature base string from list of arguments </span><span> * </span><span> * <span>@param <span>string</span> $request_url request url or endpoint </span></span><span> * <span>@param <span>string</span> $method HTTP verb </span></span><span> * <span>@param <span>array</span> $oauth_params Twitter's OAuth parameters </span></span><span> * </span><span> * <span>@return <span>string</span> </span></span><span> */ </span> <span>private function _build_signature_base_string( $request_url, $method, $oauth_params ) { </span> <span>// save the parameters as key value pair bounded together with '&' </span> <span>$string_params = array(); </span> <span>ksort( $oauth_params ); </span> <span>foreach ( $oauth_params as $key => $value ) { </span> <span>// convert oauth parameters to key-value pair </span> <span>$string_params[] = "<span><span>$key</span>=<span>$value</span>"</span>; </span> <span>} </span> <span>return "<span><span>$method</span>&"</span> . rawurlencode( $request_url ) . '&' . rawurlencode( implode( '&', $string_params ) ); </span> <span>}</span>_generate_oauth_signature()私有方法接受创建的签名碱基字符串来生成oauth签名。
<span>private function _generate_oauth_signature( $data ) { </span> <span>// encode consumer and token secret keys and subsequently combine them using & to a query component </span> <span>$hash_hmac_key = rawurlencode( $this->consumer_secret ) . '&' . rawurlencode( $this->oauth_access_token_secret ); </span> <span>$oauth_signature = base64_encode( hash_hmac( 'sha1', $data, $hash_hmac_key, true ) ); </span> <span>return $oauth_signature; </span><span>}</span>> build_oauth()创建一个包含以下数据的数组并将其保存到OAuth_details属性,该属性将稍后由pertureization_header()用于生成授权标头。
> oauth_consumer_key - Twitter应用程序消费者密钥。
- > oauth_nonce - 一个随机字符串,由客户端唯一生成,允许服务器验证在经常使用time()或mt_rand()的创建之前从未提出过请求 > oauth_signature_method - 签名方法通常是时代
- “ hmac-sha1”
- > oauth_token - 应用程序oauth token。 > oauth_timestamp - 当前的时间戳使用time()
- >创建 > oauth_version - Twitter使用版本1.0
- > oauth_signature - _generate_oauth_signature()
- 生成的OAuth签名
- 请求方法或http动词也保存到请求_method属性。
这是我们讨论的授权_header()方法的代码。
><span>/** </span><span> * Build, generate and include the OAuth signature to the OAuth credentials </span><span> * </span><span> * <span>@param <span>string</span> $request_url Twitter endpoint to send the request to </span></span><span> * <span>@param <span>string</span> $request_method Request HTTP verb eg GET or POST </span></span><span> * </span><span> * <span>@return $this </span></span><span> */ </span> <span>public function build_oauth( $request_url, $request_method ) { </span> <span>if ( ! in_array( strtolower( $request_method ), array( 'post', 'get' ) ) ) { </span> <span>return new WP_Error( 'invalid_request', 'Request method must be either POST or GET' ); </span> <span>} </span> <span>$oauth_credentials = array( </span> <span>'oauth_consumer_key' => $this->consumer_key, </span> <span>'oauth_nonce' => time(), </span> <span>'oauth_signature_method' => 'HMAC-SHA1', </span> <span>'oauth_token' => $this->oauth_access_token, </span> <span>'oauth_timestamp' => time(), </span> <span>'oauth_version' => '1.0' </span> <span>); </span> <span>if ( ! is_null( $this->get_field ) ) { </span> <span>// remove question mark(?) from the query string </span> <span>$get_fields = str_replace( '?', '', explode( '&', $this->get_field ) ); </span> <span>foreach ( $get_fields as $field ) { </span> <span>// split and add the GET key-value pair to the post array. </span> <span>// GET query are always added to the signature base string </span> <span>$split = explode( '=', $field ); </span> <span>$oauth_credentials[ $split[0] ] = $split[1]; </span> <span>} </span> <span>} </span> <span>// convert the oauth credentials (including the GET QUERY if it is used) array to query string. </span> <span>$signature = $this->_build_signature_base_string( $request_url, $request_method, $oauth_credentials ); </span> <span>$oauth_credentials['oauth_signature'] = $this->_generate_oauth_signature( $signature ); </span> <span>// save the request url for use by WordPress HTTP API </span> <span>$this->request_url = $request_url; </span> <span>// save the OAuth Details </span> <span>$this->oauth_details = $oauth_credentials; </span> <span>$this->request_method = $request_method; </span> <span>return $this; </span> <span>}</span>
> process_request()将使用wp_remote_get()或wp_remote_post()发送get或发布请求,并根据请求方法发送,然后随后使用wp_remote_retrieve_body()。
<span>/** </span><span> * Generate the authorization HTTP header </span><span> * <span>@return <span>string</span> </span></span><span> */ </span> <span>public function authorization_header() { </span> <span>$header = 'OAuth '; </span> <span>$oauth_params = array(); </span> <span>foreach ( $this->oauth_details as $key => $value ) { </span> <span>$oauth_params[] = "<span><span>$key</span>=\""</span> . rawurlencode( $value ) . '"'; </span> <span>} </span> <span>$header .= implode( ', ', $oauth_params ); </span> <span>return $header; </span> <span>}</span>请参阅本教程,以更好地了解WordPress HTTP API及其工作方式。
>最后,我们关闭了课程。
<span>/** </span><span> * Process and return the JSON result. </span><span> * </span><span> * <span>@return <span>string</span> </span></span><span> */ </span> <span>public function process_request() { </span> <span>$header = $this->authorization_header(); </span> <span>$args = array( </span> <span>'headers' => array( 'Authorization' => $header ), </span> <span>'timeout' => 45, </span> <span>'sslverify' => false </span> <span>); </span> <span>if ( ! is_null( $this->post_fields ) ) { </span> <span>$args['body'] = $this->post_fields; </span> <span>$response = wp_remote_post( $this->request_url, $args ); </span> <span>return wp_remote_retrieve_body( $response ); </span> <span>} </span> <span>else { </span> <span>// add the GET parameter to the Twitter request url or endpoint </span> <span>$url = $this->request_url . $this->get_field; </span> <span>$response = wp_remote_get( $url, $args ); </span> <span>return wp_remote_retrieve_body( $response ); </span> <span>} </span> <span>}</span>
请注意:在set_post_fields()中
>示例:
<span>} // Twitter_API_WordPress</span>请参阅下面的类用法,以便更好地理解。
如何使用类
必须在WordPress插件的上下文中使用此类。它无法作为独立类,因为它需要WordPress http api才能工作。
<span>$SomeObject->getObjectOne()->getObjectTwo()</span>>
>获取最新推文的列表或集合,请按照下面的指南进行操作。 注意:https://api.twitter.com/1.1/statuses/user_timeline.json是检索最新推文数据的资源URL。
首先,创建一个访问键和令牌的数组。<span>class Twitter_API_WordPress { </span> <span>/** <span>@var <span>string</span> OAuth access token */</span> </span> <span>private $oauth_access_token; </span> <span>/** <span>@var <span>string</span> OAuth access token secrete */</span> </span> <span>private $oauth_access_token_secret; </span> <span>/** <span>@var <span>string</span> Consumer key */</span> </span> <span>private $consumer_key; </span> <span>/** <span>@var <span>string</span> consumer secret */</span> </span> <span>private $consumer_secret; </span> <span>/** <span>@var <span>array</span> POST parameters */</span> </span> <span>private $post_fields; </span> <span>/** <span>@var <span>string</span> GET parameters */</span> </span> <span>private $get_field; </span> <span>/** <span>@var <span>array</span> OAuth credentials */</span> </span> <span>private $oauth_details; </span> <span>/** <span>@var <span>string</span> Twitter's request URL */</span> </span> <span>private $request_url; </span> <span>/** <span>@var <span>string</span> Request method or HTTP verb */</span> </span> <span>private $request_method;</span>
设置请求URL和方法,其中w3guy是您的Twitter用户名。
<span>/** Class constructor */ </span> <span>public function __construct( $settings ) { </span> <span>if ( ! isset( $settings['oauth_access_token'] ) </span> <span>|| ! isset( $settings['oauth_access_token_secret'] ) </span> <span>|| ! isset( $settings['consumer_key'] ) </span> <span>|| ! isset( $settings['consumer_secret'] ) </span> <span>) { </span> <span>return new WP_Error( 'twitter_param_incomplete', 'Make sure you are passing in the correct parameters' ); </span> <span>} </span> <span>$this->oauth_access_token = $settings['oauth_access_token']; </span> <span>$this->oauth_access_token_secret = $settings['oauth_access_token_secret']; </span> <span>$this->consumer_key = $settings['consumer_key']; </span> <span>$this->consumer_secret = $settings['consumer_secret']; </span> <span>}</span>最后,像这样处理请求。
>
<span>/** </span><span> * Store the POST parameters </span><span> * </span><span> * <span>@param <span>array</span> $array array of POST parameters </span></span><span> * </span><span> * <span>@return $this </span></span><span> */ </span> <span>public function set_post_fields( array $array ) { </span> <span>$this->post_fields = $array; </span> <span>return $this; </span> <span>} </span> <span>/** </span><span> * Store the GET parameters </span><span> * </span><span> * <span>@param $string </span></span><span> * </span><span> * <span>@return $this </span></span><span> */ </span> <span>public function set_get_field( $string ) { </span> <span>$this->getfield = $string; </span> <span>return $this; </span> <span>}</span>如果一切顺利,变量$结果将使用您最近的推文的JSON数据填充。
例如,对于发布请求,说您要更新个人资料描述。
信用和资源
<span>/** </span><span> * Create a signature base string from list of arguments </span><span> * </span><span> * <span>@param <span>string</span> $request_url request url or endpoint </span></span><span> * <span>@param <span>string</span> $method HTTP verb </span></span><span> * <span>@param <span>array</span> $oauth_params Twitter's OAuth parameters </span></span><span> * </span><span> * <span>@return <span>string</span> </span></span><span> */ </span> <span>private function _build_signature_base_string( $request_url, $method, $oauth_params ) { </span> <span>// save the parameters as key value pair bounded together with '&' </span> <span>$string_params = array(); </span> <span>ksort( $oauth_params ); </span> <span>foreach ( $oauth_params as $key => $value ) { </span> <span>// convert oauth parameters to key-value pair </span> <span>$string_params[] = "<span><span>$key</span>=<span>$value</span>"</span>; </span> <span>} </span> <span>return "<span><span>$method</span>&"</span> . rawurlencode( $request_url ) . '&' . rawurlencode( implode( '&', $string_params ) ); </span> <span>}</span>该课程的结构和代码受到詹姆斯·马利森(James Mallison)的php twitter客户端的启发。
要了解有关Twitter API和OAuth的更多信息,请参见下面的资源。
> oauth身份验证demystifified
> Twitter Oauth在方案上下文中的工作方式
- > Twitter的文档
- 创建PHP OAUTH服务器
- > IETF RFC
- 结论 在本文中,我们了解了OAuth以及如何使用由WordPress HTTP API供电的HTTP客户端类消耗Twitter。如前所述,该类应在WordPress插件中使用,因为它使用WordPress HTTP API,该插件仅在加载WordPress时才存在或实例化。这个PHP类可以用来派遣构建,例如,最近的推文窗口小部件。
- 该代码可在GitHub上获得。随意叉,甚至提交拉的请求。
快乐的编码。
经常询问有关Oauth,Twitter和WordPress HTTP API
的问题
>如何在WordPress站点上设置OAuth2?>在WordPress网站上设置OAuth2涉及安装和配置OAuth2插件。您可以从WordPress插件目录上的几个插件中进行选择。安装插件后,您需要使用OAuth2提供商的详细信息(包括客户端ID和客户端秘密)进行配置。您可能还需要设置重定向的URL和范围,具体取决于提供商的要求。>
> OAuth在Twitter API中的作用是什么?安全委派访问。它允许用户在不共享密码的情况下授予第三方应用程序访问其Twitter帐户。这意味着应用程序可以代表您与Twitter进行交互,执行诸如推文,阅读时间表和关注新用户之类的操作。>
>如何解决Twitter中的部署错误API问题?可以通过确保正确配置您的应用程序并使用正确的API键来解决Twitter中的API问题。您还应确保您的应用程序不超过Twitter的速率限制。如果您仍在遇到问题,则可能值得与Twitter的开发人员提供更多帮助。OAuth1.0和OAuth2.0?
oauth1.0和OAuth2.0之间有什么区别。但是,OAuth2.0是一个更加精简和强大的协议。它为开发人员提供了更大的灵活性,可用于各种平台上的应用程序,包括移动和桌面应用程序。另一方面,oauth1.0更复杂且灵活较低。 WordPress网站。这对于与外部API(例如Twitter API)进行交互可能很有用。要使用WordPress HTTP API,您需要使用wp_remote_get或wp_remote_post函数,传递在API端点的URL中。
>确保您的OAuth代币对于防止未经授权访问您的应用程序至关重要。您应该始终安全地存储代币,例如在安全数据库中,并且永远不要将其曝光在客户端代码中。您还应该实施令牌到期和刷新令牌,以确保即使令牌受到损害,也不能无限期地使用它。>
>在将OAuth与WordPress集成时,面临哪些常见问题? >在将OAuth与WordPress集成时面临的一些常见问题包括OAuth插件的不正确配置,具有重定向URL的问题以及OAuth Provider的API问题。这些问题通常可以通过仔细检查您的配置并确保您使用正确的API键和重定向URL来解决这些问题。>
>如何使用Twitter API对问题进行故障排除?使用Twitter,API可以涉及检查应用程序的配置,确保您使用正确的API键,并检查您的应用程序不超过Twitter的速率限制。您还可以使用Twitter的API参考文档来了解API的预期行为并确定任何潜在问题。>
>我如何将OAuth2.0与Twitter API? .0使用Twitter API,您需要创建一个Twitter应用程序并获取API键。然后,您需要使用这些键来获得访问令牌,该键可用于验证您的API请求。请注意,Twitter的实现OAuth2.0是仅应用程序的,这意味着它只能用于不需要用户上下文的请求。使用Miniorange OAuth 2.0服务器插件在WordPress中有什么好处? WordPress的Miniorange OAuth 2.0服务器插件提供了一种简单且安全的方法,可以在WordPress站点上设置OAuth2.0服务器。它支持多种赠款类型,包括授权代码,隐式,密码和客户端凭据,并且还支持JWT和SAML。这使其成为在您的WordPress网站上实现OAuth2.0的灵活和强大选择。
>
以上是Oauth,Twitter,WordPress HTTP API和您的详细内容。更多信息请关注PHP中文网其他相关文章!

WordPressCanbeseCureifManagedProperly.1)keepthewordPressCoreUpdatedTopatchVulnerabilities.2)vetandupdatepluginsandthemesfromreputables.3)EnforcestrongpasseTSandusetWordssandusetWordwordwo-factorauthenticaliation.4)

WordPressCanbuildVariousTypesofwebsites:1)个人博客,EasyTosetUpWithTheMesandPlugins.2)BusinessWebsites,使用drag-and-dropbuilders.3)e-commercePlatforms,forwoocommerceforsemcommerceforseameamseamelesssites.4)communitySites.4)conduction.4)使用bbudicatipration

WordPressisapowerfulCMSwithsignificantadvantagesandchallenges.1)It'suser-friendlyandcustomizable,idealforbeginners.2)Itsflexibilitycanleadtositebloatandsecurityissuesifnotmanagedproperly.3)Regularupdatesandperformanceoptimizationsarenecessarytomainta

WordPressExcccelineaseeandaDaptability,MakeitiTidealForBeginnersandsMallTomedium-SizedBusinesses.1)siseofuse:wordpressisuser-Frylyly.2)安全:drupalleadswithstrongsecurityfeatures.3)性能:performance:performance formation:ghandoffersefersefersefersefersefersefersefersexcellentperformanceeduetonodeutonode.jsorscor.jssor.jjsy.jjsy.jjsy.4)4)

Yes,youcanuseWordPresstobuildamembershipsite.Here'show:1)UsepluginslikeMemberPress,PaidMemberSubscriptions,orWooCommerceforusermanagement,contentaccesscontrol,andpaymenthandling.2)Ensurecontentprotectionwithupdatedpluginsandadditionalsecuritymeasures

你不需要编程知识就能使用WordPress,但掌握编程可以提升体验。1)使用CSS和HTML可以调整主题样式。2)PHP知识能编辑主题文件,添加功能。3)自定义插件和元标签可优化SEO。4)注意备份和使用子主题以防更新问题。

TosecureaWordPresssite,followthesesteps:1)RegularlyupdateWordPresscore,themes,andpluginstopatchvulnerabilities.2)Usestrong,uniquepasswordsandenabletwo-factorauthentication.3)OptformanagedWordPresshostingorsecuresharedhostingwithawebapplicationfirewal

WordPressExcelSoverotherWeberteBuilderSduetoItsflexible,可伸缩性,andopen-sourcenature.1)它'saversatilecmswithExtEnsextEnsiveCustomizedOptionsVIATHEMESANDPLUGINS.2)它的alllearbutoffersbutoffersbutoffersbutoffersbutofferspopelyContrololonCemastered.3)


热AI工具

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

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

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

Atom编辑器mac版下载
最流行的的开源编辑器

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

PhpStorm Mac 版本
最新(2018.2.1 )专业的PHP集成开发工具

螳螂BT
Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

mPDF
mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),