2011-09-30 4 views
0

사용자가 내 facebook 탭에 로그인하여 컨테스트에 참가하도록 요청하는 대화 상자를 만드는 데 문제가 있습니다.Facebook FB.ui oauth dialog error

다음 코드와 함께 FB.ui oauth 대화 상자를 사용하려고합니다.

FB.ui({ 
     client_id: '12345', 
     method: 'oauth', 
     scope: 'email,user_birthday', 
     response_type: 'token', 
     redirect_uri: "https://mydomain.com/test.php" // Change this to proper address 
     }); 

우리는 다음과 같은 메시지

API Error Code: 100 API 
Error Description: Invalid parameter 
Error Message: The "redirect_uri" parameter cannot be used in conjunction 
    with the "next" parameter, which is deprecated. 

우리는 아무데도 불구하고 다음 매개 변수를 사용하지 않는에게 얻을 redirect_uri로, 그것은 그 말을 왜 그렇게 확신하지를 포함합니다.

redirect_uri을 제거하면 다음과 같은 메시지가 표시됩니다. 당신이 탭의 응용 프로그램 내에서 운영에 대해,이 반대

API Error Code: 191 API 
Error Description: The specified URL is not owned by the application 
Error Message: redirect_uri is not owned by the application. 

답변

2

은 내가 FB.login 방법을 사용합니다.

window.fbAsyncInit = function(){ 
     FB.init({ 
      appId: 'your_app_id', 
      status: true, 
      cookie: true, 
      xfbml: true, 
      oauth: true 
     }); 
     FB.Canvas.setAutoGrow(true); 
    }; 

FB.getLoginStatus(function(response){ 
     if(response.status == 'connected'){ 
      callyourfunctiontoentercompetition(); 
     }else{ 
      FB.login(function(response){ 
       if(response.status == 'connected'){ 
        callyourfunctiontoentercompetition(); 
       }else{ 
        handlethecancelpermissions(); 
       } 
      }); 
     } 
    }); 
0

통해 UR 결정은 당신이 그렇게하지 탭에서 페이스 북의 API를

0

에 등록 된 것과 동일한 도메인에서 오는 요청 확인 : 당신의 FB.init 내

(페이스 북이 변경 될 때 또는 범위)

FB.getLoginStatus(function(response){ 
     if(response.status == 'connected'){ 
alert("User connected"); 
     }else{ 
FB.ui({ 
     method: 'oauth', 
     perms: 'email,user_birthday' //change perms to scope when Facebook supports it 
     }, function(response){ 
if(response.session){ 
alert("User connected"); 
}else if(response.installed != '1'){ 
alert("User canceled"); 
} 
}); 
} 
} 
) 
1

내가 "웹 사이트"와 P를 선택했다 내 응용 프로그램 설정에서 몇 가지 문제가 있었다 밝혀 방법 및 파마 이외의 다른 매개 변수를 전달해야 ut 사이트의 URL에 "app domain"을 추가하고 저장하도록 허용했습니다. 이로써 191 오류가 해결되었습니다. 앱 도메인에서 웹 사이트를 체크하지 않으면 저장되지 않습니다. 그 후 그것은 오히려 간단했다.

여기에서 사용한 코드입니다.

<script> 
    window.fbAsyncInit = function() { 
    FB.init({ 
    appId : 'YOUR_ID', 
    status : true, // check login status 
    cookie : true, // enable cookies to allow the server to access the session 
    xfbml : true, // parse XFBML 
    channelURL : 'http://www.your_domain.ca/channel.html', // channel.html file 
    oauth : true // enable OAuth 2.0 
    }); 
    // This should be fired on a user initiated action 

    FB.ui({ method: 'oauth', perms: 'email' }, function() { callback() }); 
    }; 
    (function(d){ 
    var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;} 
    js = d.createElement('script'); js.id = id; js.async = true; 
    js.src = "//connect.facebook.net/en_US/all.js"; 
    d.getElementsByTagName('head')[0].appendChild(js); 
    }(document)); 

    function callback() { 

    FB.getLoginStatus(function(response) { 
    if (response.authResponse) { 
    FB.api('/me', function(response) { 
     //Get user information from here 
    }); 
    } 
    }); 
    } 


</script>