【问题标题】:OAuthException:(#200) The user hasn't authorized the application to perform this action [duplicate]OAuthException:(#200)用户尚未授权应用程序执行此操作[重复]
【发布时间】:2015-09-08 09:41:30
【问题描述】:

我正在尝试从我的 javascript 发布到 Fb 页面我收到此错误

(#200) 用户未授权应用执行此操作

“OAuthException”

我可以同时发布到我的 FB 墙上,但不能发布到我作为管理员的 FB 粉丝页面。请指导我出了什么问题。我的代码:

        <input type="submit" class="btn" 
            onclick="postToFeed(); return false;" 
            value="Share with Friends"/>
        <input type="submit" class="btn" 
            onclick="postToPage(); return false;" 
            value="Share On Page"/>
        <p id='msg'></p>
        
        
        
        
        
        <script> 
          FB.init({appId: '{!appId}', status: true, cookie: true});
          
                  
          function postToPage() {
         
          var page_id = '1426984900889247';
          FB.api('https://graph.facebook.com/' + page_id, {fields: 'access_token'}, function(resp) {
          console.log(resp);
          console.log(resp.access_token);
            if(resp.access_token) {
                FB.api('https://graph.facebook.com/' + page_id + '/feed',
                    'post',
                    { message: "{!posDetails.Name}",
                      description :'{!posDetails.CMSR__Job_Description__c}',
                      link : '{!siteUrl}',
                      picture: '{!posDetails.CMSR__Linked_In_Url__c}',
                      caption: '{!posDetails.CMSR__Summary__c}',
                      access_token: resp.access_token }
                     ,function(response) {
                     console.log(response);
                     });
                }
            });
            alert(resp);
         }
            
          function postToFeed() {
            var obj = {
              method: 'feed',
              link: '{!siteUrl}',
              picture: '{!posDetails.CMSR__Linked_In_Url__c}',
              name: '{!posDetails.Name}',
              caption: '{!posDetails.CMSR__Summary__c}',
              description: '{!posDetails.CMSR__Job_Description__c}'
            };

            function callback(response) {
                if (response['post_id']) {
                    var postId = response['post_id'].split('_')[1];
                    document.getElementById('msg').innerHTML = 
                        "Posted to your wall. "+
                        "<a href=\"https://www.facebook.com/permalink.php?"+
                        "id={!me.id}&v=wall&story_fbid="+postId+"\">View your post</a>";
                }
            }

            FB.ui(obj, callback);
          }
        </script>
        
        
     
        <script>
                            
            $( document ).ready(function() {
                var nameID;
                FB.getLoginStatus(function(response) {
                    if (response.status === 'connected') {
                        FB.api('/me/accounts', function(response){
                            console.log(response);
                            console.log(response.data);
                                                            
                            var data= response['data'];
                            var ids = new Array();
                            var name = new Array();
                            
                            
                            console.log('data');
                            console.log(data);
                                
                            console.log('ID');
                            console.log(ids);
                            
                            for(var i=0; i<data.length; i++){
                                ids[i] = data[i].id;
                                name[i] = data[i].name;
                                if(ids[i] != null){
                                     console.log(ids[i]);
                                     if(nameID == 'undefined'){
                                        nameID = ids[i]+':'+data[i].name+';';
                                     }
                                     else{
                                        nameID = nameID+' '+ids[i]+':'+data[i].name+';';
                                     }
                                }
                            }
                            setVar(nameID);
                            console.log('method called ');
                            console.log(ids);
                            console.log(name);
                            console.log(nameID);
                            
                        });
                    }
                    else {
                            FB.login();
                            FB.api('/me/accounts', function(response){
                                console.log(response);
                            });
                    }
                });
                
                function setVar(param){
                    jQuery('[id$=myHiddenField]').val(param);
                    console.log('Param value '+param);
                    passStringToController();
                }
                            
            });            
        </script>

【问题讨论】:

  • 看起来您正在尝试预填充,这违反了 Facebook 平台政策

标签: javascript facebook


【解决方案1】:

这个错误意味着你没有获得权限。获取访问令牌然后尝试。要写入用户供稿,您需要 publish_actions 权限。

我相信编辑您的 Graph API 调用代码可以解决问题。

FB.api('https://graph.facebook.com/' + page_id + '/feed',
    'post',
    { 
        message: "{!posDetails.Name}",
        description :'{!posDetails.CMSR__Job_Description__c}',
        link : '{!siteUrl}',
        picture: '{!posDetails.CMSR__Linked_In_Url__c}',
        caption: '{!posDetails.CMSR__Summary__c}',
        access_token: resp.access_token 
    },
    function(response) {
        console.log(response);
    });
   }, 
   {scope: 'publish_actions'}
);

最后一部分是您获得权限的地方。 在将它们放入代码之前,您还应该尝试使用 Graph API 调用。 Here is a link for Graph call Explorer。在这里尝试使用访问令牌(权限)和 API 版本。

如果您想要教程,您可以在此链接http://lynda.com/Facebook-tutorials 上找到它。虽然它不是免费的,但它是值得的。

【讨论】:

  • 我是 javascript Fb 连接的新手。你能指导我怎么做吗?我需要进行哪些更改才能使其正常工作。
  • 我相信,这是您正在调用 Graph API 的代码
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多