2012-11-15 2 views
0

부분적 페이스 북의 OAuth URL 문제

<?php 

    require_once 'facebook.php'; 

    $app_id = 'MY_APP_ID'; 
    $app_secret = 'MY_APP_SECRET'; 
    $app_url = 'http://mysite.com/index.php/'; 
    $scope = 'user_about_me'; 

    // Init the Facebook SDK 
    $facebook = new Facebook(array(
    'appId' => $app_id, 
    'secret' => $app_secret,  
    'cookie' => true 
    )); 

    // Get the current user 
    $user = $facebook->getUser(); 

    // If the user has not installed the app, redirect them to the Auth Dialog 
    if (!$user) { 
    $loginUrl = $facebook->getLoginUrl(array(
     'scope' => $scope, 
     'redirect_uri' => $app_url, 
    )); 

    print('<script> top.location.href=\'' . $loginUrl . '\'</script>'); 
    } 

    $user_profile = $facebook->api('/me'); 
    echo "id: " . $user_profile['id']; 

?> 

나는이 페이지에 인쇄 올바른 ID를 얻을 수 있지만, 여러 다른 페이지에 나는 경우 (! $ 사용자)로 이동 .

그러나 OAuth를 URL에 오류가 있습니다 :

API 오류 코드 : 191 API 오류 설명 : 지정한 URL이 응용 프로그램 오류 메시지가 소유하지 않은 잘못된 redirect_uri로를 : 감안할 때 URL은에 의해 허용되지 않습니다 응용 프로그램 구성

는 여기에 유래에 비슷한 문제를 발견하지만, 그것을 해결하기 위해 수없는 것 : 내 설정에서/

내가 페이스 북으로 동일한 URL 및 $ APP_URL

웹 사이트를 -> 사이트 URL - >https://www.facebook.com/pages/myappname/373671679372127/

편집 : 나는 내 APP_URL을 편집, 그래서 지금은 응용 프로그램 설정에서 내 캔버스 URL과 동일합니다 : http://mysite.com/index.php/

가 지금은 오류가 발생하지 않습니다. 난 그냥 빈 창 :(

편집 얻을 :. Importent 테스트 할 때 잠시 후에 쿠키를 삭제를 그렇지 매우 임의 어딘가에 오류

+0

Facebook 개발자가 응용 프로그램을 편집 할 때 도메인이 "App Domains"로 채워 졌습니까? 하위 도메인의 제한없이 웹 애플리케이션에서 애플리케이션에 대한 총 액세스 권한을 부여하려면 기본 도메인을 채 웁니다. –

+0

내 app 도메인은 mywebsite.com입니다 (http 및 any /는 사용하지 않음). 페이 스북 (Facebook)은 내가 거기에 쓴 글을 계속 불평했다. – Pavenhimself

답변

1

확인 당신이에서 "페이스 북 로그인과 웹 사이트"에 대한 올바른 URL을 설정하는 경우 dev 설정.이 페이지는 facebook.com의 페이지 일 수 없으며 도메인에 대한 링크 여야합니다.

또한 코드의 마지막 2 행을 "else"블록으로 묶습니다. 그리고 JavaScript 코드 잘못된 것입니다. 정확합니다.

print('<script> top.location.href="' . $loginUrl . '";</script>'); 

큰 따옴표로 이해하면 세미콜론을 놓쳤습니다. 키우면 항상 필요하지 않은 경우에도, 당신은 더 나은

이 코드를보십시오)를 사용

또한
$user = $facebook->getUser(); 

    // If the user has not installed the app, redirect them to the Auth Dialog 
    if (!$user) { 
    $loginUrl = $facebook->getLoginUrl(array(
     'scope' => $scope, 
     'redirect_uri' => $app_url, 
    )); 
    print('<script> top.location.href=\'' . $loginUrl . '\';</script>'); 
    } 
    else { 
    echo 'User ID: ' . $user; 
    } 

는 "index.php에"다음에 슬래시를 제거. 그게 아니라 폴더 (희망/추측).

+0

포함되어 있다면 오류가 발생하고 포함되어 있지 않으면 오류가 발생한다. 이 파일에서 알게되었지만 미안하다고 게시하는 것을 잊어 버렸습니다. 내 앱 비밀은 가짜입니다. :)하지만 그 문제를 해결할 것입니다. – Pavenhimself

+0

URL을 에코하여 내 주소 표시 줄에 넣었습니다. 하지만 여전히 빈 페이지를 제공합니다. ( – Pavenhimself

+0

그래서 loginurl은 빈 페이지를 제공합니까? 페이스 북에 로그인 했습니까? – luschn