There are various types of access token for facebook app. The best article that explains them is How to handle access tokens with Facebook SDK v4.0 by Sammy Kaye. To post article / item / product from our own website to facebook fan page, we need to use Page Access Token.
The initial token can be obtained from Facebook Graph API tool. However, that is just a short-lived access token, which will expire in an hour or two after generation. We need to made a Graph API call to get a long-lived access token, which has two months expiry date. Lastly, get a permanent access token, which will never expire and can be used in our daily script.
We can test our script using short-lived access token, but then you have to regenerate another token after expiration. So we should directly get permanent access token before writing our script.
1) First, go to Facebook Developers Tools, click on Graph API Explorer.
2) We see the first page of Graph API Explorer. At "Graph API Explorer" button, select the newly created app and click "Get Access Token".
3) We need to select relevant permissions for our purpose of our app. Auto posting to facebook page does not require user data. So we skip this menu and go to "Extended Permissions".
4) Select "manage_pages" and "publish_actions" at Extended Permissions. Click "Get Access Token".
5) There will be a few pop up windows, click "Okay" for each of them.
6) Finally, we get the short-lived Page Access Token at the tool panel. Copy this access token.
7) To check this access token, we can use facebook access token linter. Paste the token into the debug box.
8) As we can see, this token will expire in an hour.
9) Now, we want to exchange with long-lived access token for our app. Construct this Graph API Call URL and post at your browser URL box.
https://graph.facebook.com/oauth/access_token?client_id=< Your App ID >&client_secret=< Your App secret >&grant_type=fb_exchange_token&fb_exchange_token=< Short-lived token >
10) The Graph API call returned this:
access_token=< Long-lived token >&expires=5184000
Note: When you lint this token to debug box, it showed no expiry date for this token. However, the Graph API call gave us "expires=5184000" -- 60 days, which is still an open question for me
11) To exchange this long-lived token to permanent token, paste this to URL box of your browser. Make sure you still login facebook that owns the app.
https://graph.facebook.com/me/accounts?access_token=< Long-lived token >
12) Now find the facebook page name and that's the permanent Page Access Token.
13) Check it again just to make sure. Paste the token into Lint debug box. It says Never expire.
Now we can work on our script with above App ID, App Secret and permanent Page Access Token.
- How to auto publish post on Instagram Page with PHP/cURL and without using Instagram API (1)
- New and Updated! Facebook Remote Status Update with PHP/cURL Bot
- How to auto publish post on Facebook Fan Page as admin using Facebook PHP SDK V4 Graph API v2.2 (4) - Integrate with Opencart
- How to auto publish post on Facebook Fan Page as admin using Facebook PHP SDK V4 Graph API v2.2 (3) - Single Product Manual Posting
- How to auto publish post on Facebook Fan Page as admin using Facebook PHP SDK V4 Graph API v2.2 (1) - Create Facebook App