2015-03-23 3 views
0

Я использую facebook api, чтобы опубликовать сообщение на странице facebook как приложение facebook. Я создал приложение facebook. Сообщение также делится, но проблема в том, что он не отправляется как приложение для facebook. Вместо этого он запрашивает у пользователя логин, а затем он публикует сообщение как пользователь. Любая помощь, связанная с тем, как я могу опубликовать пост в качестве приложения для Facebook, будет оценена, поскольку я пробовал это в течение длительного времени. Thanx заранее друзей. Код, который я использовал, выглядит следующим образом.Опубликовать как приложение для Facebook на странице Facebook

using Facebook; 

    protected void CheckAuthorization() 
    { 
     string authorizationCode = Request.QueryString["code"]; 
     string access_token = Facebook_GetAccessToken(authorizationCode); 
     FacebookShare(access_token); 
    } 

    private string Facebook_GetAccessToken(string pAuthorizationCode) 
    { 
     string urlGetAccessToken = "https://graph.facebook.com/oauth/access_token"; 
     urlGetAccessToken += "?client_id=my app id"; 
     urlGetAccessToken += "&client_secret=app secret"; 
     urlGetAccessToken += "&redirect_uri=" + Facebook_GetRedirectUri(); 
     urlGetAccessToken += "&code=" + pAuthorizationCode; 

     string responseData = RequestResponse(urlGetAccessToken); 
     if (responseData == "") 
     { 
      return ""; 
     } 
     NameValueCollection qs = HttpUtility.ParseQueryString(responseData); 
     string access_token = qs["access_token"] == null ? "" : qs["access_token"]; 

     return access_token; 
    } 

    protected void FacebookShare(string token) 
    { 
     if (token != null) 
     { 
      Int64 transactionid = Convert.ToInt64(Cache["transactionid"]); 
      string app_id = "my app id"; 

      string app_secret = "app secret"; 

      string scope = "offline_access,read_stream,publish_actions,publish_stream,manage_pages,status_update"; 
      dynamic parameters = new ExpandoObject(); 

      parameters.link = "my website link"; 
      parameters.name = "my project name"; 
      parameters.picture= "my website logo"; 
      var client = new FacebookClient(token); 
      client.Post("/1374775846180409/feed", parameters); // this is my facebook page id where I want to share post. 
      Response.Cookies["transaction"].Expires = DateTime.Now; 
     } 
     else 
     { 
     } 
    } 

Что касается вышеприведенного кода, я получаю код авторизации на Facebook успешно.

+0

Вы не можете публиковать на странице "как" приложение. Если вы хотите опубликовать эту страницу, вам нужно использовать токен доступа к странице. – CBroe

+0

Хорошо. Если это возможно, используя страницу facebook, можно ли это сделать без запроса логина? – Manbir

+0

Получение маркера доступа к странице, конечно, требует входа в систему, по крайней мере, один раз. – CBroe

ответ

5

Вы можете только спросить своего пользователя, который вошел в ваше приложение, чтобы опубликовать его на facebook, приложениям как таковым не разрешено публиковать сообщения. Вам понадобится токен доступа к странице для публикации в качестве страницы, на которой есть разрешения на изменение данных, принадлежащих странице Facebook. Чтобы получить токен доступа к странице, вам нужно начать с получения токена доступа пользователя, для которого ваш пользователь должен войти в ваше приложение и запросить область разрешений manage_pages. Затем вы можете GET /me/accounts, который вернет токен доступа к странице для каждой страницы, которой вы управляете.

Этого нельзя сделать с помощью автономного доступа или без входа.

Смежные вопросы