1

이것은 명백한 문제처럼 보일 수 있지만 캔버스 응용 프로그램 및 facebook csharp sdk에 관한 페이스 북 개발자 사이트를 살펴본 결과 내 질문에 대한 답을 찾지 못했습니다.여러 페이지 Facebook 캔버스 응용 프로그램의 사이트 구조

웹 양식을 사용하여 facebook-C# -sdk v5.4x 또는 abouts, .net 3.5를 사용하고 있습니다.

데스크톱 용 캔버스 앱에는 여러 진입 점이 있습니다.

https://apps.facebook.com/my_canvas_app/Default.aspx
https://apps.facebook.com/my_canvas_app/Register.aspx?EventID=12345
https://apps.facebook.com/my_canvas_app/SomeOtherPage.aspx

내 첫 번째 질문은 페이스 북에서 첫 번째 요청에서, 나는이 (페이스 북 - C#을가가 처리한다 -sdk하는), I는 OAuth는 토큰을 signed_request받을 수있다 약 2 시간 동안 유효합니다. 이 oauth 토큰을 다시 작성하고 oauth 요청 (그래프 쿼리 등)을 시도하기 전에 유효한지 확인하는 올바른 방법은 무엇입니까?

지금 내 모든 링크 (예 : Default.aspx에서)는 <a href="https://apps.facebook.com/my_canvas_app/SomeOtherPage.aspx" target="_top">Go to Some Other Page</a>처럼 보이며, 결국 페이스 북으로 왕복하며 새로운 signed_request이 생겨 결국 갱신 된 oauth 토큰이됩니다.

둘째, 내 사이트에 asp.net을 통한 일반 양식 다시 게시를 수행 할 때 signed_request이 양식에 나와있어 응용 프로그램에 문제가없는 것 같습니다. <input type="hidden" name="signed_request" value="<%=Request.Form["signed_request"]%>" />. 이것을 생략하면 포스트 백에는 oauth 정보가 없으므로 실패합니다. 이 방법이 캔버스 응용 프로그램에서 다시 게시를 수행하는 올바른 방법입니까? csharp-sdk의 소스에서 요청간에 oauth 토큰을 보존하기 위해 세션에 저장되는 것이 아무것도 없기 때문에 여러 페이지/포스트 백에 숨겨진 입력 및 target = "_ top"링크가 필요합니다. 나는이 공제에서 정정합니까?

셋째, iframe없이 모바일 캔버스 앱을 개발할 때 내 첫 번째 가정이 맞다면 내 페이지의 모든 링크가 여전히 https://apps.facebook.com/my_canvas_app/MobilePage.aspx으로 이동해야합니다.

누구든지 이러한 주제에 대해 밝힐 수 있다면 크게 감사하겠습니다.

감사합니다.

답변

0

내가 페이지 단위의 signed_request을 사용하고있는 중이 야.데스크톱 환경의 모든 링크는 http://apps.facebook.com/myappnamespace/MyPageName.aspxtarget="_top"으로 이동합니다. 이렇게하면 모든 페이지를 변경하면 업데이트 된 oauth 토큰이 생성됩니다. 모바일 환경에서는 signed_request과 (와) 다르게 작동합니다. 이에 대한 해결책은 대신 서버 측 인증을 사용하는 것입니다. 모바일 환경에 iframe 내에서 사용하지 않으므로 http://apps.facebook.com/myappnamespace을 사용하지 않습니다. 모바일은 다른 일반 웹 사이트처럼 작동합니다.

2

은 지금 내 모든 링크는 (말을 Default.aspx에서) 새로운 signed_request을 받고, 페이스 북에 왕복을하고 끝나는 다른 페이지로 이동처럼, 따라서 갱신의 OAuth 토큰.

또한 JavaScript SDK를 페이지에 삽입하는 것이 좋습니다. FB.getLoginStatus를 호출하면 매번 유효한 액세스 토큰을 얻을 수 있습니다. 당신이 할 수있는 다른 것은, 당신이 세션의 일종으로 액세스 토큰을 저장하지 할 경우 짧은 시간 액세스, 당신은 오랫동안 하나의 사용자 로그인시 얻을 토큰 교환 https://developers.facebook.com/roadmap/offline-access-removal/

를 볼 수 있습니다 , 그렇다면 다시 게시를 통해 페이지간에 페이지를 전송해야합니다.

(그리고 어쩌면 당신은뿐만 아니라 https://developers.facebook.com/docs/authentication/access-token-expiration/ 살펴 보셔야합니다.)

+0

자바 스크립트를 사용하지 않고 모든 oauth를 수행하려고합니다. javascript가 필요한 경우 왜 'signed_request'를 사용합니까? 나의 이해는'signed_request'가 javascript lib를 사용하는 것에 대한 대안이라는 것이다. – Matthew

+0

서버 측 인증을 수행하는 경우 액세스 토큰은 약 2 시간이 아니라 약 60 일 동안 유효해야합니다 (https://developers.facebook.com/roadmap/offline-access-removal/ 참조). – CBroe

관련 문제