플래시를 통해 날씨 API에 액세스하려고합니다. 마지막 단계에서 액세스 토큰 대신 API에서 값을 가져 오는 중입니다. 문제는 액세스 토큰이 권한 헤더를 통과해야하며, Flash는 권한 헤더를 보낼 방법이 없습니다. 즉, 보안상의 이유로 허용하지 않습니다.이 문제에 대한 해결책은 무엇입니까?플래시 및 Oauth 2.0을 통해 Yahoo Weather API에 액세스
참조 : https://developer.yahoo.com/oauth2/guide/apirequests/
그것은 말한다 : API 요청은 API 요청을하려면 ¶ 만들기
내가 사용하고있는 코드입니다 [토큰 여기에 대한 액세스를 배치]는 인증 헤더에 액세스 토큰 을 포함한다. API 요청은 HTTPS를 통해 안전하게 으로 만들어야합니다. 헤더 내용은 Bearer 다음에 액세스 토큰이라는 단어로 구성됩니다. 샘플 요청 헤더 ¶
는 https://social.yahooapis.com/v1/user/abcdef123/profile?format=json 인증을 GET :
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; ?>
답변 해 주셔서 감사합니다. 누군가가 토큰에 대한 해결책으로 답변하지 않는 한 지금은 해결 된 것으로 표시했습니다. :) –
토큰을 포함하고 싶은 ** 특정 ** 이유가 있습니까? 야후는 개발자 계정이나 토큰 또는 프록시 등의 추가 기능 없이도 기상 요청을하기 위해 위의 시스템을 만들었 기 때문에 간단히 말해서 작동합니다. 추신 : 내 표시된 코드로'getYahooWeather ("2444293");라고 말하면 충분합니다. xml에 원한다면'("2444293", "xml");'으로 지정하거나 ** string **이 null 인 경우 ** else ** 문에서'fmt'를 xml로 기본 설정합니다 (예 : not 지정) ... –
토큰은 실제로 너무 일반적입니다. 예를 들어 yahoo의 flickr API로 플래시가 정상적으로 작동합니다. 트위터 API에도 좋습니다. 날씨 API로 작동하게 만드는 방법이 궁금합니다. –