I worked on a project for a client where I needed to interact with the Instagram API via PHP. Instagram only provides Ruby and Python libraries so I put together a PHP library for use on the project. My first pass only required non-authenticated calls which only required a client id to be passed to the endpoints.
After the project completed, I went back and added support for authenticated calls using OAuth where you need to have the user authorize Instagram and then receive an access token to sign all requests with the API. I tried to model the API on similar ones from Twitter and Facebook.