The Instagram API has recently been updated with the following message:
We do not approve the public_content permission for one-off projects such as displaying hashtag based content on your website. As alternative solution, you can show your own Instagram content, or find a company that offers this type of service (content discover, moderation, and display).
This practically means that we have to make a few extra steps, if you would like to show public content, that is content/posts from accounts that are not yours, in your app.
First off all, we need an API token like we always do:
Creating an API token
Create an Instagram application here, and enter the data about your app (for redirect URI use something like http://your-redirect-uri?code=CODE). After your app is created, make sure that Disable implicit OAuth is checked and that you've added yourself as a Sandbox user.
Next visit the following url in your browser:
Where YOUR_CLIENT and YOUR_REDIRECT are your CLIENT_ID and your REDIRECT_URI (without parameters)
Now you should see a login screen, login and approve (as the sandbox user). It should redirect to YOUR_REDIRECT_URI#access_token=SOMETOKEN
You now have your access token for viewing your own feed.
If you would like to show additional feeds of other accounts to which you do have access (e.g. your friends feeds), you can invite them as Sandbox users to your app (make sure they accept this invitation). You can then use this API token to show posts from their feed as well.
If you would like to show (additional) feeds of other accounts to which you do not have access (e.g. of a news site), you should submit your app to Instagram (or 'go live') with at least the public_content and basic permission. You can best select "My app allows people to login with Instagram and share their own content." to be submitted.
Finding your user ID
You can best use this site to find your user ID.