2017-06-16 16 views
2

私のウェブサイトに自動車などの情報を提供するAPIへの接続を試みています。問題は、それが署名とナウンスを生成するため、私がPostManからそれに接続できることです。 私が苦しんでいる問題は、PHPをスローするときにOAUTHクラスがnounceとシグネチャを生成していないので接続できないということです。 私もCURLで試したことがあります。Oauth 1.0 - Apiへの接続

$config = array(
    'consumer_key' => 'XXXXXXXXXXXXXXXXXXXXXXX', 
    'consumer_secret' => 'XXXXXXXXXXXXXXXXXXXXXXX', 
    'request_uri' => 'http://bdc.autobild.es/autobild' 
); 
$oauth = new OAuth($config['consumer_key'], 
$config['consumer_secret'], OAUTH_SIG_METHOD_HMACSHA1); 
$requestTokenInfo = $oauth->getRequestToken('http://bdc.autobild.es/autobild/','http://localhost/myfolder/'); 
d($requestTokenInfo); 

$accessTokenInfo = $oauth->getAccessToken('http://bdc.autobild.es/autobild/'); 
d($accessTokenInfo); 

$requestInfo = $oauth->getLastResponseInfo(); 
d($requestInfo); 

$oauth->fetch("http://bdc.autobild.es/autobild/list?type=coche"); 
$data = $oauth->getLastResponseInfo(); 
d($data); 

ありがとう:

私の現在のコードはこれです!

+0

これは認証するのですか、認証した後にAPIリクエストを行うのですか? – apokryfos

+0

最初の部分は認証するもので、もう1つはこの場合の車のリストを取得することです。 –

答えて

0

:サービスが直接あなたのアプリからアクセス可能ないくつかのメソッドを提供している場合

あなたはおそらくこれの大部分をスキップすることができます(通常はアプリの使用状況情報を取得等がこれらにリンクされています)私は解決策を見つけました。問題は、引数がここで行方不明になったということでした。

$oauth = new OAuth($config['consumer_key'], $config['consumer_secret'], OAUTH_SIG_METHOD_HMACSHA1); 

正しい方法は次のとおりですため

$config = array(
     'consumer_key' => 'XXXXXXXXXXXXXXXXXXXXXXXX', 
     'consumer_secret' => 'XXXXXXXXXXXXXXXXXXXXXXXX', 
    ); 

    $oauth = new OAuth($config['consumer_key'], $config['consumer_secret'], OAUTH_SIG_METHOD_HMACSHA1, OAUTH_AUTH_TYPE_URI);  

    $requestInfo = $oauth->getLastResponseInfo(); 

    $oauth->fetch("http://example.es/list?type=car"); 
    $data = $oauth->getLastResponse(); 
    var_dump($data); 

Thank's皆:だから

$oauth = new OAuth($config['consumer_key'], $config['consumer_secret'], OAUTH_SIG_METHOD_HMACSHA1, OAUTH_AUTH_TYPE_URI); 

、完全なコードは次のようです手伝い!

1

ここで私は多分それは有用であろう、OAuthのサービスへの認証方法は次のとおりです。

callback.php今

session_start(); 
$oauth = new OAuth($config['consumer_key'], $config['consumer_secret'], OAUTH_SIG_METHOD_HMACSHA1, OAUTH_AUTH_TYPE_FORM); 
$oauth->setToken($_REQUEST['oauth_token'], $_SESSION["tokenInfo"]["secret"]); 
$accessTokenInfo = $oauth->getAccessToken("<oauth authorize URL>"); 
$_SESSION["accessToken"] = $accessTokenInfo; 
unset($_SESSION["tokenInfo"]); //Its work is done 

たびに

signin.php

//Gets the request token 
session_start(); 
$oauth = new OAuth($config['consumer_key'], $config['consumer_secret'], OAUTH_SIG_METHOD_HMACSHA1, OAUTH_AUTH_TYPE_FORM); 
$requestTokenInfo = $oauth->getRequestToken("<oauth token URL>", $_SERVER["SERVER_NAME"]."/callback.php"); 
$_SESSION["tokenInfo"] = $requestTokenInfo; 
header("Location: <oauth authorize URL>?token='.$requestTokenInfo["oauth_token"]); //May vary on your OAuth service 

APIデータを取得する必要があります:

session_start(); 
$oauth = new OAuth($config["consumer_key"], $config["consumer_secret"], OAUTH_SIG_METHOD_HMACSHA1, OAUTH_AUTH_TYPE_URI); 
$oauth->setToken($_SESSION["accessToken"]["token"],$_SESSION["accessToken"]["secret"]); 

$oauth->fetch("URL"); 
$data = $oauth->getLastResponse(); 
$requestInfo = $oauth->getLastResponseInfo(); 
$responseHeaders = $oauth->getLastResponseHeaders(); 

これは、ユーザーに代わってリクエストを実行する必要がある場合に機能します。ユーザーは、サービスのoauthオートライザーにリダイレクトされ、アプリケーションを認証する場合は、トークンを含むコールバックページに戻ります。

$oauth = new OAuth($config['consumer_key'], $config['consumer_secret'], OAUTH_SIG_METHOD_HMACSHA1); 

$oauth->fetch(url); 
+0

私はアクセストークンを取得できません。APIは常に "Services_Endpoint_" autobild "_has_been_setup_successfully_"を返しますが、トークンのようなものはありません。私は認証されているかどうかはわかりませんが、データを取得したいときは、APIがこのエラーメッセージを返します。 "致命的なエラー:キャッチされない例外 'OAuthException'のメッセージが '無効な認証/悪い要求" –

+0

@PacoGómezCapónは、アクセストークンを取得するために使用する必要があるエンドポイントの文書化 – apokryfos

+0

彼らは私に小さな文書を与えましたが、エンドポイント、鍵および秘密鍵は1つしかありません。私はPostmanでこれを試して、APIと正しく接続し、他のAPIのようにデータを取り出すことができますが、問題はPHPでやってみるときです。すべてのケースで、より多くのドキュメントがあればすべてが簡単になります。ありがとう。 –

関連する問題