问题
I am trying to post on the wall of a facebook page. I am able to post on the user wall using App Access token.
I got the App Access Token through extending the DefaultFacebookClient
public class ConnectionService extends DefaultFacebookClient{
public ConnectionService(String appId, String appSecret) {
AccessToken accessToken = this.obtainAppAccessToken(appId, appSecret);
this.accessToken = accessToken.getAccessToken();
}
}
With this I am able to post to user wall using the appID and appSecret. But when I tried to post to Page Wall i get error of " The user hasn't authorized the application to perform this action"
Anyone can advice?
回答1:
The App Access Token is the most basic one, and will not allow you to post anything. In order to post something to a Facebook Page (as a Page), you need to get a Page Access Token.
The process is a bit complicated, because you actually need to authorize the user with the "manage_pages" permission first, with the User Access Token you can call the API to get a Page Access Token (/me/accounts).
See those links:
- https://developers.facebook.com/docs/facebook-login/
- https://developers.facebook.com/docs/facebook-login/access-tokens/
- http://www.devils-heaven.com/facebook-access-tokens/
Btw, the REST API is deprecated: https://developers.facebook.com/blog/post/616/
You can also try the "Client Token" (Developer Settings > Advanced), i never worked with that one but it could be the easiest solution. In any case, an App Access Token is the wrong one.
回答2:
To post on a facebook page wall, you will need to follow these steps:
- Head over to https://developers.facebook.com/tools/explorer
- Click on "Get Access Token"
- Under "Extended Permissions" tab, select select manage_pages and publish_actions and hit "Get Access Token"
- Now under Graph API, under Get call, type in "me/accounts" and hit Submit
- In the screen below, you will see the "data" json object with all your pages and page access tokens.
- Grab the desired page token access and replace the PAGE_ACCESS_TOKEN in the code below with this token.
- Replace PAGE_NAME with your page name (the page name slug in the URL).
- Run the below code and that should do the job :)
final FacebookClient fb = new DefaultFacebookClient(PAGE_ACCESS_TOKEN);
final Page page = facebookClient.fetchObject(PAGE_NAME, Page.class);
facebookClient.publish("PAGE_NAME/feed", FacebookType.class, Parameter.with("message", "RestFB test"));
回答3:
Make sure that the scopes you mentioned while authenticating user includes manage_pages
also. This error occurs when you have not included this in your scope. Refer this
回答4:
Since u r generating access token from java class. u can set the permissions u require from user in ur manage app link from ur facebook profile page and get the access token here.....
来源:https://stackoverflow.com/questions/19491433/post-to-facebook-page-wall-using-restfb-api