Version 1
[yaffs-website] / vendor / php-instagram-api / php-instagram-api / Instagram / Auth.php
diff --git a/vendor/php-instagram-api/php-instagram-api/Instagram/Auth.php b/vendor/php-instagram-api/php-instagram-api/Instagram/Auth.php
new file mode 100644 (file)
index 0000000..9cce45c
--- /dev/null
@@ -0,0 +1,101 @@
+<?php
+
+/**
+ * Instagram PHP
+ * @author Galen Grover <galenjr@gmail.com>
+ * @license http://opensource.org/licenses/mit-license.php The MIT License
+ */
+
+namespace Instagram;
+
+/**
+ * Auth class
+ *
+ * Handles authentication
+ * 
+ * {@link https://github.com/galen/PHP-Instagram-API#authentication}
+ * {@link https://github.com/galen/PHP-Instagram-API/blob/master/Examples/_auth.php}
+ */
+class Auth {
+
+    /**
+     * Configuration array
+     *
+     * Contains a default client and proxy
+     *
+     * client_id:       These three items are required for authorization
+     * redirect_uri:    URL that the Instagram API shoudl redirect to
+     * grant_type:      Grant type from the Instagram API. Only authorization_code is accepted right now.
+     * scope:           {@link http://instagram.com/developer/auth/#scope}
+     * display:         Pass in "touch" if you'd like your authenticating users to see a mobile-optimized
+     *                  version of the authenticate page and the sign-in page. 
+     *
+     * @var array
+     * @access protected
+     */
+        protected $config = array(
+        'client_id'     => '',
+        'client_secret' => '',
+        'redirect_uri'  => '',
+        'grant_type'    => 'authorization_code',
+        'scope'         => array( 'basic' ),
+        'display'       => ''
+        );
+
+    /**
+     * Constructor
+     *
+     * @param array $config Configuration array
+     * @param \Instagram\Net\ClientInterface $client Client object used to connect to the API
+     * @access public
+     */
+    public function __construct( array $config = null, \Instagram\Net\ClientInterface $client = null ) {
+        $this->config = (array) $config + $this->config;
+        $this->proxy = new \Instagram\Core\Proxy( $client ? $client : new \Instagram\Net\CurlClient );
+    }
+
+    /**
+     * Authorize
+     *
+     * Redirects the user to the Instagram authorization url
+     * @access public
+     */
+    public function authorize() {
+        header(
+            sprintf(
+                'Location:https://api.instagram.com/oauth/authorize/?client_id=%s&redirect_uri=%s&response_type=code&scope=%s',
+                $this->config['client_id'],
+                $this->config['redirect_uri'],
+                implode( '+', $this->config['scope'] )
+            )
+        );
+        exit;
+    }
+
+    /**
+     * Get the access token
+     *
+     * POSTs to the Instagram API and obtains and access key
+     *
+     * @param string $code Code supplied by Instagram
+     * @return string Returns the access token
+     * @throws \Instagram\Core\ApiException
+     * @access public
+     */
+    public function getAccessToken( $code ) {
+        $post_data = array(
+            'client_id'         => $this->config['client_id'],
+            'client_secret'     => $this->config['client_secret'],
+            'grant_type'        => $this->config['grant_type'],
+            'redirect_uri'      => $this->config['redirect_uri'],
+            'code'              => $code
+        );
+        $response = $this->proxy->getAccessToken( $post_data );
+        if ( isset( $response->getRawData()->access_token ) ) {
+            return $response->getRawData()->access_token;
+        }
+        throw new \Instagram\Core\ApiException( $response->getErrorMessage(), $response->getErrorCode(), $response->getErrorType() );
+    }
+
+
+}
\ No newline at end of file