Example #1
0
    if (require_login($app)) {
        $app->redirect('https://api.instagram.com/oauth/authorize/?client_id=' . Config::$instagramClientID . '&redirect_uri=' . Config::instagramRedirectURI() . '&response_type=code&scope=comments');
    }
});
$app->get('/auth/instagram-callback', function () use($app) {
    if (require_login($app)) {
        $params = $app->request()->params();
        if (!array_key_exists('code', $params)) {
            // Error authorizing
            $app->redirect('/auth/instagram');
        } else {
            $ch = curl_init();
            curl_setopt($ch, CURLOPT_URL, 'https://api.instagram.com/oauth/access_token');
            curl_setopt($ch, CURLOPT_POST, true);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
            curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query(array('client_id' => Config::$instagramClientID, 'client_secret' => Config::$instagramClientSecret, 'redirect_uri' => Config::instagramRedirectURI(), 'grant_type' => 'authorization_code', 'code' => $params['code'])));
            $response = curl_exec($ch);
            $token = json_decode($response);
            if (property_exists($token, 'access_token')) {
                // Remove the Instagram account info from a past user account if it already exists
                ORM::for_table('users')->where('instagram_user_id', $token->user->id)->find_result_set()->set('instagram_user_id', '')->set('instagram_access_token', '')->save();
                // Update the user record with the instagram access token
                $user = ORM::for_table('users')->find_one($_SESSION['user_id']);
                $user->instagram_access_token = $token->access_token;
                $user->instagram_user_id = $token->user->id;
                $user->instagram_response = $response;
                $user->save();
            } else {
                $app->redirect('/auth/instagram');
            }
        }