2

약 한 주 전에 내 웹 사이트의 Facebook 로그인이 올바르게 작동했지만 "코드"를 사용하여 액세스 토큰을 검색하려고 할 때 "이 인증 코드가 사용되었습니다." . 나는 많은 문서와 제안을 점검했지만 아무런 결과도 얻지 못했다.Facebook을 사용하여 액세스 토큰을 얻을 수 없습니다. OAuth

단계 재현 (FB PHP SDK 사용) : 올바른와 FB의 인증에

  1. 보내기 사용자가 (슬래시 후행) URI를 반환 urlencoded로 :

    https://www.facebook.com/dialog/oauth?client_id=[my_cid]&redirect_uri=http%3A%2F%2Fmydomain.com%2Fauth%2Ffacebook%2F&state=e15e0894cd922098f9f8f340c820538d&scope=email&display=page 
    
  2. 에 코드 PARAM을 받기를 내 리디렉션 URI (모든 것이 정상적으로 진행 됨)

  3. 액세스 토큰에 대한 보내기 요청 :

    https://graph.facebook.com/oauth/access_token?client_id=[my_cid]&redirect_uri=http%3A%2F%mydomain.com%2Fauth%2Ffacebook%2F&client_secret=[my_secret]&code=[long_code_goes_here] 
    

나는 또한 redirect_uri를 urlencoded하지 않았습니다.

왜?

답변

2

이것은 지금까지 선택 사항 이었지만 모두에게 12/5/12으로 출시 될 예정인 Facebook 변경 때문입니다. 년 12 '12 깨는 변화에 대한 Developer Roadmap에서 :의 OAuth 인증 코드에 대한

새로운 보안 제한 우리는 인증 코드가 액세스 토큰 만 교환 할 수 한 번 그들이 교환하는 것이 필요합니다 액세스 토큰은 1 분 내에 생성됩니다. 이는 OAuth 2.0 사양 과 일치하며 처음부터 "인증 코드는 수명이 짧고 일회용이어야합니다"라고 명시되어 있습니다. 자세한 내용은 인증 문서를 확인하십시오. 먼저 사용자에 대한 access_token이를 얻을 때

그래서, 당신은 그것을 저장하고 명시 적으로 그것을 사용자가 FBAPI와 상호 작용하는 데 필요한 다음에 설정해야합니다 : $ facebook-> setAccessToken ($ theToken를);

+0

그래서 사용자의 토큰을 받고 바로 다음에 setAccessToken을 호출하지 않으면 나중에 호출 할 수 없습니까? –

+1

하실 수 있습니다. 너는이 잘못을 가졌다. 그것은 그것과 관련이 없다. –

관련 문제