Как установить диалоговое окно разрешения для сообщения на стене - PullRequest
0 голосов
/ 08 декабря 2011

Я создал приложение в Facebook. С помощью Facebook Javascript SDk я разместил сообщение из приложения Android PhoneGap на стене Facebook. Но я хочу отобразить диалоговое окно с разрешением до публикации сообщения на стене. (т.е.) Пока я нажимаю кнопку «Разрешить» в диалоговом окне разрешений, сообщение должно публиковаться на стене, а я нажимаю кнопку «Не разрешать», сообщение не должно публиковаться на стене. Мой код:

<body>
<div id='fb-root'></div>
<script src='all.js'></script>
<input type="text" value="User ID" name="user_ids" />
           <p><a onclick='postToFeed(); return false;'>Post to Feed</a></p>
            <p id='msg'></p>
    <script> 
      FB.init({appId: "xxxxxxxx", status: true, cookie: true});

      function postToFeed() 
    {
                    var user_ids = document.getElementsByName("user_ids")[0].value;
                   alert(user_ids);

                    FB.api('/me/feed', 'post', { message: user_ids}, function(response) {
                           if (!response || response.error) {
                            alert('Error occured');
                           } else {
                           alert('Post ID: ' + response.id);
                           }
                   });
      }
   </script>
  </body>

вышеуказанный код размещен на сервере. В phonegap (index.html) я вызвал URL с помощью метода window.open, он отобразит текстовое поле и кнопку. пока я нажимаю кнопку (получить значение из текстового поля) сообщение должно опубликовать на стене как установить диалог разрешения для этой кодировки или как передать {perms: 'publish_stream'} в FB.api ('/ me / feed')

Пожалуйста, дайте мне предложение / идеи

Заранее спасибо.

1 Ответ

0 голосов
/ 09 декабря 2011

Я не знаю, правильно ли я понимаю ваш вопрос, но я бы посоветовал: сначала спросите разрешение, а на следующем шаге покажите кнопку отправки или автоматически отправьте сообщение - все, что вы захотите.Не оба одновременно (я просто не понимаю).Вот код, который может вам немного помочь:

window.fbAsyncInit = function() {
    FB._https = true;
    FB.init({
        appId : 'APP_ID',
        status : true, 
        cookie : true, 
        oauth : true 
    });

    // Check whether the user is connected to the app
    FB.getLoginStatus(function(response) {
        if (response.status !== 'connected') {
            // The user has not authorized the app
            authorizeApp();
        } else {
            // The user has already authorized the app
            var fbuid = response.authResponse.userID;
            var accessToken = response.authResponse.accessToken;
            FB.api('/me', function(response) {
                // Check for publish_stream extended permission
                var query = FB.Data.query('select publish_stream from permissions where uid={0}', fbuid);
                query.wait(function(rows) {
                    if(rows[0].publish_stream == 1) {
                        // The user has granted the extended permission
                        postToWall();
                    } else {
                        // The user has not granted the extended permission
                        authorizeApp();
                    }
                });
            });
        }
    });
};
(function() {
    var e = document.createElement('script');
    e.type = 'text/javascript';
    e.src = document.location.protocol + '//connect.facebook.net/de_DE/all.js';
    e.async = true;
    document.getElementById('fb-root').appendChild(e);
}());

function authorizeApp() {
    // Redirect the user back after authorization
    var path = 'https://www.facebook.com/dialog/oauth?';
    var queryParams = ['client_id=APP_ID', 'redirect_uri=REDIRECT_URI', 'response_type=token', 'scope=publish_stream'];
    var query = queryParams.join('&');
    var url = path + query;
    top.location.href = url;
}

// OR
function authorizeAppInPopup() {
    FB.login(function(response) {
        if (response.authResponse) {
            // User authorized app
            postToWall();
        } else {
            // User cancelled login or did not fully authorize
        }
    }, {scope: 'publish_stream'});
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...