2016-06-02 4 views
0

각도로 옐프 API 요청을 생성하려고하는데 잘못된 서명 오류가 발생합니다. 나는 여기에서 비슷한 문제를 겪고있다 : Yelp API and AngularJS하지만 운이 없다. 여기각도 옐로피 api 유효하지 않은 서명 오류

app.controller('MainController', ['$scope', 'yelpService', 
     function($scope, yelpService) { 
      yelpService.retrieveYelp('', function(data) { 
       $scope.businesses = data.businesses; 
      }); 
     }]); 

그리고 내 서비스 : 여기 내 컨트롤러

/**/angular.callbacks._0({"error": {"text": "Signature was invalid", "id": "INVALID_SIGNATURE", "description": "Invalid signature. Expected signature base string: GET\u0026http%3A%2F%2Fapi.yelp.com%2Fv2%2Fsearch\u0026callback%3Dangular.callbacks._0%26location%3DSan%252BFrancisco%26oauth_consumer_key%3DiVBpzLwc-Us4-2dlRTzJJg%26oauth_nonce%3DikBZWdLPBMRif0fT0NUi4ygoiUwNXMUq%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1464889608736%26oauth_token%3DY-XgKu4g2wHAK7s_h6NoKwg8rooI797N%26term%3Dmexican"}})

사람이 도움을 줄 수 : 여기

app.factory("yelpService", function($http) { 
      return { 
       "retrieveYelp": function(name, callback) { 
        var method = 'GET'; 
        var url = 'http://api.yelp.com/v2/search'; 
        var params = { 
          callback: 'JSON_CALLBACK', 
          location: 'San+Francisco', 
          oauth_consumer_key: '', //Consumer Key 
          oauth_token: '', //Token 
          oauth_signature_method: "HMAC-SHA1", 
          oauth_timestamp: new Date().getTime(), 
          oauth_nonce: randomString(32, 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'), 
          term: 'mexican' 
         }; 
        var consumerSecret = ''; //Consumer Secret 
        var tokenSecret = ''; //Token Secret 
        var signature = oauthSignature.generate(method, url, params, consumerSecret, tokenSecret, { encodeSignature: false}); 
        // var signature = oauth.authorize(request_data, token); 
        params['oauth_signature'] = signature; 
        $http.jsonp(url, {params: params}) 
         .then(function(response){ 
          console.log(response); 
         }, function(response) { 
         // called asynchronously if an error occurs 
         // or server returns response with an error status. 
          console.log(response) 
         }) 
        } 
      } 
     }); 



function randomString(length, chars) { 
    var result = ''; 
    for (var i = length; i > 0; --i) result +=  chars[Math.round(Math.random() * (chars.length - 1))]; 
    return result; 
} 

그리고 오류인가?

답변

0

이전에 작동했던 쿼리에 정렬 옵션을 추가하는 동안 동일한 오류가 발생했습니다. 옐프 그렇게

private $sort:number = 0 

가 잘못 내 문제가

private $sort:string = "0" 

가에 대해서는 해결 된 문자열

를 제외하고 한 곳은 밝혀 문제를 찾고 후 나는 번호와 같은 종류의 유형을 정의하여 코드, 내 코드에서 콜백이 다르게 정의되었음을 알았습니다.

아마 테스트를 위해서, var params를 yelpParams와 같은 이름으로 바꾸면 어떻게됩니까? (며칠 전에 미리 정의 된 요청 변수와 변수 이름이 같음을 사용하는 노드 백엔드에서 문제가있었습니다. 그 이후 same_name : same_name을 사용하지 않기로했습니다. 같은 것을보십시오 :

또한
...{params: yelpParams}... 

, 내가 옐프는 알파벳 순으로

희망 분류 PARAMS와 서명을 기다리고 그 포럼에 읽어도 나는 그것을 재현 할 수있는이 힌트 하나를 해결하기 위해 당신을 이끌 것 너의 문제

관련 문제