私は天気APIにフラッシュを介してアクセスしようとしています。アクセストークンと引き換えにAPIから値を取得する最後のステップで立ち往生してください。承認ヘッダーを通過する必要があり、Flashは承認ヘッダーを送信する方法がありません。つまり、セキュリティ上の理由から許可されません。FlashとOauth 2.0を使用してYahoo Weather APIにアクセス
参考: https://developer.yahoo.com/oauth2/guide/apirequests/
それは言う:
は、APIリクエストを作成、APIリクエストを作成するには¶Authorizationヘッダ内 アクセストークンが含まれています。 APIリクエストはHTTPS経由で安全に にする必要があります。ヘッダ内容は、ベアラ の後にアクセストークンが続く単語で構成されます。
var url = "http://weather.yahooapis.com/forecastrss?w=2444293&u=f" var access_token = < access token here > var encoder: Base64Encoder = new Base64Encoder(); encoder.insertNewLines = false; encoder.encode(access_token); var urlRequest: URLRequest = new URLRequest("./proxyForYahoo.php"); var urlLoader: URLLoader = new URLLoader(); urlLoader.addEventListener(Event.COMPLETE, onComplete); urlLoader.addEventListener(HTTPStatusEvent.HTTP_STATUS, onHTTPStatus); urlLoader.addEventListener(IOErrorEvent.IO_ERROR, onIOError); urlLoader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onSecurityError); urlRequest.method = URLRequestMethod.GET; urlRequest.contentType = "application/json"; urlRequest.requestHeaders = new Array( new URLRequestHeader('Authorization', 'Bearer ' + encoder.toString()), new URLRequestHeader('Accept', 'application/json'), new URLRequestHeader('Content-Type', 'application/json') ); var urlVars: URLVariables = new URLVariables(); urlVars.data = url; urlRequest.data = urlVars; urlLoader.load(urlRequest); function onComplete(e: Event): void { trace("completed---"); trace(e.target.data); } function onHTTPStatus(e: Event): void { trace("onHTTPStatus"); trace(e.target.data); } function onIOError(e: Event): void { trace("onIOError"); } function onSecurityError(e: Event): void { trace("onSecurityError"); }
ヤフープロキシ:
を無記名[トークンここにあなたのアクセスを置く]<?php $url = $_REQUEST['data'] ; $ch = curl_init(); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); curl_setopt ($ch, CURLOPT_URL, $url); curl_setopt ($ch, CURLOPT_HEADER, 0); ob_start(); curl_exec ($ch); curl_close ($ch); $string = ob_get_contents(); $content = ob_end_clean(); echo $string; ?>
ここでは、私が使用していたコードです:サンプルリクエストヘッダ¶
はhttps://social.yahooapis.com/v1/user/abcdef123/profile?format=json 認証をGET
あなたの答えをありがとう。誰かがトークンの解法で答えない限り、私はそれを今解決したとマークしました。 :) –
あなたはトークンを関与させたい**具体的な理由はありますか? Yahoo自身が開発者アカウントやトークンやプロキシなどのような追加機能を必要とせずに気象要求を作成するための上記のシステムを作成したので... PS:私の示したコードでは、結果として 'getYahooWeather(" 2444293 ");と言うだけで十分です。もしそれをxmlに入れたいなら、 '(" 2444293 "、" xml ");'として指定するか、** else **文の 'fmt'を指定文字列が' null'指定された)... –
トークンは実際にはあまりにも一般的です。たとえば、yahooのflickr APIを使用して、Flashで正常に動作します。また、twitter apiでうまくいく。だから、天気予報で動作させる方法は何か不思議そうでした。 –