2011-07-31 5 views
1

이벤트 용으로 약간의 웹 사이트를 만들고 있습니다. 아이디어는 facebook 이벤트에서 참석자를이 웹 사이트에 추가하는 것입니다. 문제는 참석 서비스가 access_token을 필요로한다는 것입니다. 사용자가 앱에 로그인하는 것을 원하지는 않습니다. 앱의 access_token을 사용하고 싶습니다. 그러나 이것은 효과가없는 것 같습니다. 자바 스크립트에서 나는 다음과 같은 코드를 사용하고Facebook 액세스_token이 유효하지 않습니다.

 
// get facebook auth_token 
$FB_APP_ID = '****'; 
$FB_APP_SECRET = '***'; 
$token_url = "https://graph.facebook.com/oauth/access_token?client_id=" . $FB_APP_ID . "&client_secret=" . $FB_APP_SECRET . "&grant_type=client_credentials"; 
$app_token = file_get_contents($token_url); 
parse_str($app_token); // creates: $access_token 

:

/** 
* Gets all the attending Users 
* @param function callback: the function to call, when data loading is ready 
* @param function callback: the function to call, when data loading is broken 
* @return void 
*/ 
this.getAttending = function(callback, errorHandler) 
{ 
    FB.api('/' + this.eventId + '/attending', function(response) { 
     if(response.error) { 
      errorHandler(response.error['message']); 
     } else { 
      callback(response.data); 
     } 
    } , {access_token: facebook.accessToken});  
} 

내가 오류 메시지가 나타납니다 : 잘못된 OAuth 액세스 토큰

나는 access_token과 수신에 대한 다음의 PHP 코드가 있습니다.

액세스 토큰과 같이 보인다 : 111737995591905 | l9e3niEMM1RsIUhwHZv3pn3c19M

사용자 액세스 토큰과 같이 보인다 : 145634995501895 | 2.AQBcWfbvdzhloLYc.3600.1312138800.1-1146858041 |

내가 사용자를 사용하려고 cjCkHZqquyyFyX2dY0q2YCaSyy0

액세스 토큰, 모든게 잘 작동합니다. 그러나 토큰을 하드 코드하면 다른 사용자에게는 작동하지 않습니다. 서버가 나를 위해 파싱 한 토큰을 시도 할 때 잘못된 토큰 동작이 발생합니다. 누군가가 이것에 대한 해결책을 알고 있습니까? 공개 이벤트이며 참석자를 알기 전에 사용자가 로그인하는 것을 원하지 않습니까?

전혀 가능합니까? 고맙습니다.

답변

0

하드 코딩하는 동안 토큰을 인코딩 했습니까? | % 7C 여야합니다. 잠시 동안 잘못되었을 수도있는 다른 것을 생각하면

+0

access_token을 인코딩하지 않았습니다. URL이 아닌 javascript API를 사용하여 webservice를 호출하기 때문에 이것은 필요하지 않습니다. 그것은 또한 내 문제 : 나는 expires 쿼리 변수를 access_token 뒤에 넣으려고했습니다. 아마도 이것은 디코딩되어 잘못된 access_token으로 반환되었을 것입니다. 짧은 access_token으로 이제는 작동하는 것 같습니다. – VeeWee

0

자신의 액세스 토큰을 얻은 다음 응용 프로그램에 하드 코드를 작성하는 것이 좋습니다. 다른 사람이 자격 증명을 훔칠 수없는 보안 서버에서 실행 중이라고 가정합니다. 그런 다음 페이지를 방문하는 모든 사용자는 목록을 볼 수있는 권한이있는 사용자 고유의 액세스 토큰을 사용하여 게스트 목록을 볼 수 있습니다.

client_credentials 부여 유형은 사용자 데이터에 액세스하기위한 것이 아니며 응용 프로그램 데이터에만 적용됩니다. 나머지 응용 프로그램이 어떻게 작동하는지 모르지만 사용자 데이터를보기 위해 사용자 액세스 토큰이 필요하다고 가정합니다.

+0

access_token의 만료 날짜가 있기 때문에. 잠시 동안 정보를 비동기 적으로로드하기 때문에 자바 스크립트 솔루션을 선택했습니다. 따라서 액세스 토큰은 안전한 환경에 있지 않습니다. 사용자 자격 증명을 원하지 않습니다. 나는 참석 한 사람들의 사진을 보여주고 싶습니다. 간단한 이벤트 웹 사이트이므로 앱에서 사용자 권한을 요청할 필요가 없습니다. 공개 이벤트 데이터 만 필요합니다. – VeeWee

+0

액세스 토큰을 노출시키지 않고 목록을 제공하는 단일 API 끝점을 만드는 것은 매우 간단합니다. –

0

나는이 방법을 사용하여 오프라인 액세스 권한을 지정했다가 만료되지 않는 액세스 토큰을 생성하므로 무기한 사용할 수 있습니다. 그러면 이론적으로 Facebook 계정에서만 이벤트 데이터를 가져 오도록 권한을 부여합니다. 그러면 귀하의 이벤트 세부 정보를보고 귀하의 웹 사이트에 아무런 문제없이 제공 할 수 있습니다.

+0

그것은 오히려 더러운 walkaround 다 : 모두는 나의 access_token를 사용할 것이다.모두에게 눈에.니다. 이것이 내 계정에 해를 끼칠 수 있는지는 모르겠지만 그 해결책은 마음에 들지 않습니다. 솔루션을 찾았습니다 (위 그림 참조). 고맙다 어쨌든 :) – VeeWee

+0

당신이 당신이 참석하는 어떤 이벤트를 볼 수 있다는 것을 두려워하지 않는 한 (IE 이벤트) 앱 액세스 권한을 부여하려는 다른 권한을 정의하는 한, 보안 문제 일 수 있습니다.) 일반적으로 문제가되지 않습니다. 내가 이것을 사용한 경우 공개적으로 볼 수있는 페이지를위한 것이 었습니다. 아무도 내용을 숨기지 않았으므로 볼 수는 있지만 실제로는 문제가 아닙니다. 다행히 해결책을 찾았습니다! – Xenology

관련 문제