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>
다음은 HTTP 요청에 대한 get 또는 post 매개 변수를 수락하는 방법입니다.
개인 방법 _build_signature_base_string ()은 서명 기반 문자열을 생성하기 위해 다음 인수를 받아들입니다. 요청 URL, 요청 메소드 또는 HTTP 동사 및 OAUTH 자격 증명 (소비자 키 및 비밀; 액세스 토큰 및 비밀; GET 매개 변수; get 요청입니다).<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>
“hmac-sha1” 인 서명 메소드 <_ _> oauth_token - 응용 프로그램 Oauth 토큰. <_ _> oauth_timestamp - time () 로 생성 된 현재 타임 스탬프 <_ _> oauth_version - Twitter는 버전 1.0 를 사용합니다 <_ _> oauth_signature - _generate_oauth_signature ()에 의해 생성 된 Oauth 서명
<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>
여기에 우리가 이야기 한 authorization_header () 메소드의 코드는 다음과 같습니다.
<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>
<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>
<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>
신용 및 자원
이 클래스의 구조와 코드는 James Mallison의 PHP Twitter 클라이언트에서 영감을 받았습니다.<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>
시나리오 컨텍스트에서 트위터 OAuth가 어떻게 작동하는지 PHP OAUTH 서버 생성
결론
이 기사에서는 WordPress HTTP API로 구동되는 HTTP 클라이언트 클래스를 사용하여 OAUTH와 Twitter를 소비하는 방법에 대해 배웠습니다. 앞에서 언급 한 바와 같이,이 클래스는 WordPress HTTP API를 사용하기 때문에 WordPress 플러그인 내에서 사용해야합니다. WordPress는 WordPress가로드 될 때만 존재하거나 인스턴스화됩니다. 이 PHP 클래스는 예를 들어 최근 트윗 위젯과 같은 건물에 유용 할 수 있습니다.
트위터에서 오류 API 문제 배포를 수정하려면 오류 배포 오류 배포는 어떻게해야합니까? 애플리케이션이 올바르게 구성되고 올바른 API 키를 사용하고 있는지 확인하여 Twitter의 API 문제를 해결할 수 있습니다. 또한 응용 프로그램이 트위터의 요금 제한을 초과하지 않도록해야합니다. 여전히 문제가 발생하고 있다면 추가 지원을 위해 Twitter의 개발자 지원에 연락 할 가치가 있습니다. 문제 해결 문제 문제 해결 문제. Twitter API를 사용하면 응용 프로그램의 구성을 확인하고 올바른 API 키를 사용하고 응용 프로그램이 트위터의 요금 제한을 초과하지 않는지 확인할 수 있습니다. Twitter의 API 참조 문서를 사용하여 API의 예상 동작을 이해하고 잠재적 인 문제를 식별 할 수 있습니다. WordPress 용 Miniorange OAuth 2.0 서버 플러그인을 사용하면 어떤 이점이 있습니까? WordPress 용 Miniorange Oauth 2.0 서버 플러그인은 WordPress 사이트에서 OAUTH2.0 서버를 설정하는 간단하고 안전한 방법을 제공합니다. 권한 부여 코드, 암시, 암호 및 클라이언트 자격 증명을 포함한 여러 보조금 유형을 지원하며 JWT 및 SAML도 지원합니다. 이것은 WordPress 사이트에서 OAUTH2.0을 구현하기위한 유연하고 강력한 선택입니다.<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>
OAUTH1.0 및 OAUTH2.0의 차이는 보안 API 인증을위한 프로토콜입니다. 그러나 OAUTH2.0은보다 간소화되고 강력한 프로토콜입니다. 개발자에게 더 많은 유연성을 제공하며 모바일 및 데스크탑 응용 프로그램을 포함한 다양한 플랫폼의 응용 프로그램에 사용할 수 있습니다. 반면에 OAUTH1.0은 더 복잡하고 유연성이 떨어집니다. WordPress HTTP API를 사용하여 HTTP 요청을 보낼 수 있습니다. WordPress 사이트. 이것은 트위터 API와 같은 외부 API와 상호 작용하는 데 유용 할 수 있습니다. WordPress HTTP API를 사용하려면 상호 작용하려는 API 엔드 포인트의 URL을 통과하는 wp_remote_get 또는 wp_remote_post 함수를 사용해야합니다.
Oauth를 WordPress와 통합하는 동안 직면 한 일반적인 문제는 무엇입니까? 트위터 API의 문제를 해결할 수있는 방법은 무엇입니까?
OAuth2를 사용하십시오. .0 Twitter API를 사용하면 Twitter 응용 프로그램을 작성하고 API 키를 얻어야합니다. 그런 다음 API 요청을 인증하는 데 사용할 수있는 액세스 토큰을 얻으려면 이러한 키를 사용해야합니다. Twitter의 OAUTH2.0 구현은 응용 프로그램 전용이므로 사용자 컨텍스트가 필요하지 않은 요청에만 사용할 수 있습니다.
위 내용은 Oauth, Twitter, WordPress HTTP API 및 귀하의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!