API错误代码:191,facebook错误

时间:2012-07-12 07:50:37

标签: asp.net facebook

我在网上找到了这个有用的代码,但是当我运行代码并点击“Published Wall Post”时,我收到了这个错误。

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.

如何修复此代码?

谢谢

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:fb="http://www.facebook.com/2008/fbml">    
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>        
    <title>New Graph api & Javascript Base FBConnect Tutorial | Thinkdiff.net</title>    
</head>
<body>        
    <div id="fb-root"></div>        
    <script type="text/javascript">
        window.fbAsyncInit = function() {                
            FB.init({appId: '420291518023354', status: true, cookie: true, xfbml: true}); 

            /* All the events registered */                
            FB.Event.subscribe('auth.login', function(response) {                   
                // do something with response                    
                login();                
            });
            FB.Event.subscribe('auth.logout', function(response) {                    
                // do something with response                    
                logout();                
            });
            FB.getLoginStatus(function(response) {                    
                if (response.session) {                        
                // logged in and connected user, someone you know                        
                login();                    
                }                
            });            
        };

        (function() {                
            var e = document.createElement('script');                
            e.type = 'text/javascript';                
            e.src = document.location.protocol +                    
                '//connect.facebook.net/en_US/all.js';                
            e.async = true;                
            document.getElementById('fb-root').appendChild(e);            
        }());

        function login(){                
            FB.api('/me', function(response) {                    
                document.getElementById('login').style.display = "block";                    
                document.getElementById('login').innerHTML = response.name + " succsessfully logged in!";                
            });            
        }

        function logout(){                
            document.getElementById('login').style.display = "none";            
        }

        //stream publish method            
        function streamPublish(name, description, hrefTitle, hrefLink, userPrompt){                
            FB.ui(                
            {
            method: 'stream.publish',                    
            message: '',                    
            attachment: {                        
                name: name,                        
                caption: '',                        
                description: (description),                        
                href: hrefLink                    
            },
            action_links: [                        
                { text: hrefTitle, href: hrefLink }                    
            ],
            user_prompt_message: userPrompt
            },
            function(response) {

            });
        }
        function showStream(){
            FB.api('/me', function(response) {
                //console.log(response.id);
                streamPublish(response.name, 'Thinkdiff.net contains geeky stuff', 'hrefTitle', 'http://localhost:3000/', "Share thinkdiff.net");
            });
        }

        function share(){
            var share = {
                method: 'stream.share',
                u: 'http://thinkdiff.net/'
            };

            FB.ui(share, function(response) { console.log(response); });
        }

        function graphStreamPublish(){
            var body = 'Reading New Graph api & Javascript Base FBConnect Tutorial';
            FB.api('/me/feed', 'post', { message: body }, function(response) {
                if (!response || response.error) {
                    alert('Error occured');
                } else {
                    alert('Post ID: ' + response.id);
                }
            });
        }

        function fqlQuery(){
            FB.api('/me', function(response) {
                 var query = FB.Data.query('select name, hometown_location, sex, pic_square from user where uid={0}', response.id);
                 query.wait(function(rows) {

                   document.getElementById('name').innerHTML =
                     'Your name: ' + rows[0].name + "<br />" +
                     '<img src="' + rows[0].pic_square + '" alt="" />' + "<br />";
                 });
            });
        }

        function setStatus(){
            status1 = document.getElementById('status').value;
            FB.api(
              {
                method: 'status.set',
                status: status1
              },
              function(response) {
                if (response == 0){
                    alert('Your facebook status not updated. Give Status Update Permission.');
                }
                else{
                    alert('Your facebook status updated');
                }
              }
            );
        }
    </script>

    <h3>New Graph api & Javascript Base FBConnect Tutorial | Thinkdiff.net</h3>
    <p><fb:login-button autologoutlink="true" perms="email,user_birthday,status_update,publish_stream"></fb:login-button></p>

    <p>
        <a href="#" onclick="showStream(); return false;">Publish Wall Post</a> |
        <a href="#" onclick="share(); return false;">Share With Your Friends</a> |
        <a href="#" onclick="graphStreamPublish(); return false;">Publish Stream Using Graph API</a> |
        <a href="#" onclick="fqlQuery(); return false;">FQL Query Example</a>
    </p>

    <textarea id="status" cols="50" rows="5">Write your status here and click 'Status Set Using Legacy Api Call'</textarea>
    <br />
    <a href="#" onclick="setStatus(); return false;">Status Set Using Legacy Api Call</a>

    <br /><br /><br />
    <div id="login" style ="display:none"></div>
    <div id="name"></div>

</body>

1 个答案:

答案 0 :(得分:0)

这是因为facebook权限。当您创建一个新的FB应用程序时,有一个名为“App Domains”的字段,您只需要从该地址调用FB应用程序,否则它将无法工作。

例如,如果您有应用域http://www.mysite.com并且您尝试从http://mysite.com(没有www)进行访问,那么该错误就会出现。

我建议您在“App Domains”中存储您域名的所有可能组合,包括别名和子域名

希望这能帮到你