私は時間を割いていただきありがとうございます。私は初心者ですので、もっと情報が必要な場合はお知らせください。OAuthクライアントの不正な応答をデバッグしています。私はPHP、Laravel5.3、PHPLeague OAuthクライアントとGuzzleを使用しています
私はCLIOで提供されるAPIに接続するために、LaravelにOAUTH2クライアントをセットアップしようとしています。私はGUZZLEを使ってHTTPを処理するPHPLeague's OAuth2 Client Libraryを使用しています。
私は、クライアントをセットアップしてClioの認証ページにリダイレクトし、アクセスを許可し、自分のアプリケーションにリダイレクトされ、認証コードを受け取ることができました。
アクセストークンを取得するためのリクエストを送信する必要がある次のステップで、何か問題が発生します。ここで
私が受け取るエラーは、次のとおりです。
タイプのエラー:リーグ\のOAuth2 \クライアント\プロバイダに渡される引数1 \ AbstractProvider :: prepareAccessTokenResponse()は、中/ユーザーと呼ばれるタイプの配列、文字列与えられた、でなければなりません。ライン上の/patrick/Sites/ssacorp/vendor/league/oauth2-client/src/Provider/AbstractProvider.php 565
今、それを追跡するために、私は次のような方法が開始するために呼び出されます知っていますアクセストークンを取得しています:
public function getAccessToken($grant, array $options = [])
{
$grant = $this->verifyGrant($grant);
$params = [
'client_id' => $this->clientId,
'client_secret' => $this->clientSecret,
'redirect_uri' => $this->redirectUri,
];
$params = $grant->prepareRequestParameters($params, $options);
$request = $this->getAccessTokenRequest($params);
$response = $this->getParsedResponse($request);
$prepared = $this->prepareAccessTokenResponse($response);
$token = $this->createAccessToken($prepared, $grant);
return $token;
}
私はプロパティをダンプし、私が手:
$ paramsは
array(5) { ["client_id"]=> string(40) "*************************************" ["client_secret"]=> string(40) "************************************" ["redirect_uri"]=> string(26) "http://app.ssadv.org/oauth" ["grant_type"]=> string(18) "authorization_code" ["code"]=> string(20) "******************" }
をだから、すべてがここに通常のようです。私はもちろんこれらの資格情報を共有していません。
$要求
object(GuzzleHttp\Psr7\Request)#179 (7) { ["method":"GuzzleHttp\Psr7\Request":private]=> string(4) "POST" ["requestTarget":"GuzzleHttp\Psr7\Request":private]=> NULL ["uri":"GuzzleHttp\Psr7\Request":private]=> object(GuzzleHttp\Psr7\Uri)#181 (7) { ["scheme":"GuzzleHttp\Psr7\Uri":private]=> string(4) "http" ["userInfo":"GuzzleHttp\Psr7\Uri":private]=> string(0) "" ["host":"GuzzleHttp\Psr7\Uri":private]=> string(12) "app.clio.com" ["port":"GuzzleHttp\Psr7\Uri":private]=> NULL ["path":"GuzzleHttp\Psr7\Uri":private]=> string(12) "/oauth/token" ["query":"GuzzleHttp\Psr7\Uri":private]=> string(0) "" ["fragment":"GuzzleHttp\Psr7\Uri":private]=> string(0) "" } ["headers":"GuzzleHttp\Psr7\Request":private]=> array(2) { ["Host"]=> array(1) { [0]=> string(12) "app.clio.com" } ["content-type"]=> array(1) { [0]=> string(33) "application/x-www-form-urlencoded" } } ["headerNames":"GuzzleHttp\Psr7\Request":private]=> array(2) { ["content-type"]=> string(12) "content-type" ["host"]=> string(4) "Host" } ["protocol":"GuzzleHttp\Psr7\Request":private]=> string(3) "1.1" ["stream":"GuzzleHttp\Psr7\Request":private]=> object(GuzzleHttp\Psr7\Stream)#183 (7) { ["stream":"GuzzleHttp\Psr7\Stream":private]=> resource(262) of type (stream) ["size":"GuzzleHttp\Psr7\Stream":private]=> NULL ["seekable":"GuzzleHttp\Psr7\Stream":private]=> bool(true) ["readable":"GuzzleHttp\Psr7\Stream":private]=> bool(true) ["writable":"GuzzleHttp\Psr7\Stream":private]=> bool(true) ["uri":"GuzzleHttp\Psr7\Stream":private]=> string(10) "php://temp" ["customMetadata":"GuzzleHttp\Psr7\Stream":private]=> array(0) { } } } inside Transfer
$応答
これは実際には、アレイとメインエラーの原因となっていることになっている方法prepareAccessTokenResponse()に入る文字列です。私はポストマンでリンクやパラメータをテストし、アクセストークンが実際に同じを使用して返されます確認している
!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"\n
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">\n
\n
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">\n
\n
<head>\n
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />\n
<title>The page you were looking for doesn't exist (404)</title>\n
</head>\n
\n
<body>\n
<!-- This file lives in public/404.html -->\n
\n
<div class="dialog">\n
<h1>The page you were looking for doesn't exist.</h1>\n
<p>You may have mistyped the address or the page may have moved.</p>\n
</div>\n
</body>\n
\n
</html>
:それはCLIOによって、その実際に404 HTMLページことが明らかになったダンプ私の$ paramsのURIと情報私のURIが正しく、$ requestがPOSTメソッドを使用していると言っているときに404が表示されるのはなぜですか?これを確認するために、私はChromeのDev Tools Networkツールを使用しようとしましたが、そのリンクへのPOSTコールを見つけることができませんでした。グーグルが適切なデータを適切なアドレスに送信していることを確認するには、どうすればよいですか?