ramsey / laravel-oauth2-instagram

A Laravel 5 service provider for league/oauth2-instagram
MIT License
29 stars 9 forks source link

Importing class Instagram fails #3

Closed DanDvoracek closed 7 years ago

DanDvoracek commented 7 years ago

Hi there ! First of all thanks for your work.

I had a look at your different files that you mentioned in the issue #2 , but I can't get it to work. Here is, I think, a few reasons why.

Despite the fact I did follow the instructions on the github page line by line, the following isn't true for me:

use Instagram;

This simply doesn't not load any class as it isn't found. Then I tried to import the following class:

use Ramsey\Laravel\OAuth2\Instagram\Facades\Instagram;

But then, it (PhpStorm) tells me that methods like authorize() or getAuthorizationUrl() are simply not found.

Therefore I start to wonder how to access those methods really. I did follow the exact same installation steps you have on the git page of this project. I also tried to replicate what you mentioned as an example in #2 , no success. Has there been any update to this plugin?

Also, even though it has anything to do with my issues, I'm actually testing all of that locally, using an Instagram Sandbox app.. Is there anything to keep in mind by doing so?

Many thanks,

ramsey commented 7 years ago

Did you install this package using Composer?

DanDvoracek commented 7 years ago

I did yes. I'll try to repeat the process once more, but I'm pretty sure I didn't miss anything.

Edit: So I have gone through the entire process again and the class still isn't found or isn't right regarding the methods.

I also tried to do the exact same thing as you did in the example you refer to in #2 and I end up with the following message (using class Ramsey\Laravel\OAuth2\Instagram\Facades\Instagram; the class Instagram would simply not be found):

{
code: 400,
error_type: "OAuthException",
error_message: "You must include a valid client_id, response_type, and redirect_uri parameters"
}

Which kind of make sense because the methods can't be accessed. So it doesn't pass the params..

ramsey commented 7 years ago

What you describe sounds like the installation steps haven't been completed.

You've updated the providers and aliases arrays in config/app.php, as described here? After that, you have to run php artisan vendor:publish?

I'm just double-checking. :-)

Beyond these things, I'm not sure what else could be causing your application not to find the Instagram alias or methods. It sounds like something is either not configured properly or the autoloader doesn't know about these files.

DanDvoracek commented 7 years ago

Yep, I did all of that. I even repeated the process from scratch more than once and even made a fresh Laravel install to see if it would be due to some clashing config in my project but nothing to do.. I always end up facing the same problem. My project uses Laravel 5.2... could that be an issue?

Edit: I also did $php artisan config:clear before publishing vendors...

ramsey commented 7 years ago

The example version of the app over here uses Laravel 5.2, so that shouldn't be an issue. The fact that it's having errors when attempting to find the Instagram alias still sounds like there might be a configuration issue. Do you mind posting the contents of your config/app.php file here (remove any tokens, usernames, passwords, etc. that might be in that file first, please)? :-)

DanDvoracek commented 7 years ago

Of course, here it is:


<?php

return [

    /*
    |--------------------------------------------------------------------------
    | Application Environment
    |--------------------------------------------------------------------------
    |
    | This value determines the "environment" your application is currently
    | running in. This may determine how you prefer to configure various
    | services your application utilizes. Set this in your ".env" file.
    |
    */

    'env' => env('APP_ENV', 'production'),

    /*
    |--------------------------------------------------------------------------
    | Application Debug Mode
    |--------------------------------------------------------------------------
    |
    | When your application is in debug mode, detailed error messages with
    | stack traces will be shown on every error that occurs within your
    | application. If disabled, a simple generic error page is shown.
    |
    */

    'debug' => env('APP_DEBUG', false),

    /*
    |--------------------------------------------------------------------------
    | Application URL
    |--------------------------------------------------------------------------
    |
    | This URL is used by the console to properly generate URLs when using
    | the Artisan command line tool. You should set this to the root of
    | your application so that it is used when running Artisan tasks.
    |
    */

    'url' => env('APP_URL', 'http://localhost'),

    /*
    |--------------------------------------------------------------------------
    | Application Timezone
    |--------------------------------------------------------------------------
    |
    | Here you may specify the default timezone for your application, which
    | will be used by the PHP date and date-time functions. We have gone
    | ahead and set this to a sensible default for you out of the box.
    |
    */

    'timezone' => 'UTC',

    /*
    |--------------------------------------------------------------------------
    | Application Locale Configuration
    |--------------------------------------------------------------------------
    |
    | The application locale determines the default locale that will be used
    | by the translation service provider. You are free to set this value
    | to any of the locales which will be supported by the application.
    |
    */

    'locale' => 'en',

    /*
    |--------------------------------------------------------------------------
    | Application Fallback Locale
    |--------------------------------------------------------------------------
    |
    | The fallback locale determines the locale to use when the current one
    | is not available. You may change the value to correspond to any of
    | the language folders that are provided through your application.
    |
    */

    'fallback_locale' => 'en',

    /*
    |--------------------------------------------------------------------------
    | Encryption Key
    |--------------------------------------------------------------------------
    |
    | This key is used by the Illuminate encrypter service and should be set
    | to a random, 32 character string, otherwise these encrypted strings
    | will not be safe. Please do this before deploying an application!
    |
    */

    'key' => env('APP_KEY'),

    'cipher' => '***-***-***', // I masked this..

    /*
    |--------------------------------------------------------------------------
    | Logging Configuration
    |--------------------------------------------------------------------------
    |
    | Here you may configure the log settings for your application. Out of
    | the box, Laravel uses the Monolog PHP logging library. This gives
    | you a variety of powerful log handlers / formatters to utilize.
    |
    | Available Settings: "single", "daily", "syslog", "errorlog"
    |
    */

    'log' => env('APP_LOG', 'single'),

    /*
    |--------------------------------------------------------------------------
    | Autoloaded Service Providers
    |--------------------------------------------------------------------------
    |
    | The service providers listed here will be automatically loaded on the
    | request to your application. Feel free to add your own services to
    | this array to grant expanded functionality to your applications.
    |
    */

    'providers' => [

        /*
         * Laravel Framework Service Providers...
         */
        Illuminate\Auth\AuthServiceProvider::class,
        Illuminate\Broadcasting\BroadcastServiceProvider::class,
        Illuminate\Bus\BusServiceProvider::class,
        Illuminate\Cache\CacheServiceProvider::class,
        Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class,
        Illuminate\Cookie\CookieServiceProvider::class,
        Illuminate\Database\DatabaseServiceProvider::class,
        Illuminate\Encryption\EncryptionServiceProvider::class,
        Illuminate\Filesystem\FilesystemServiceProvider::class,
        Illuminate\Foundation\Providers\FoundationServiceProvider::class,
        Illuminate\Hashing\HashServiceProvider::class,
        Illuminate\Mail\MailServiceProvider::class,
        Illuminate\Pagination\PaginationServiceProvider::class,
        Illuminate\Pipeline\PipelineServiceProvider::class,
        Illuminate\Queue\QueueServiceProvider::class,
        Illuminate\Redis\RedisServiceProvider::class,
        Illuminate\Auth\Passwords\PasswordResetServiceProvider::class,
        Illuminate\Session\SessionServiceProvider::class,
        Illuminate\Translation\TranslationServiceProvider::class,
        Illuminate\Validation\ValidationServiceProvider::class,
        Illuminate\View\ViewServiceProvider::class,

        /*
         * Html Service Provider
         */
        Collective\Html\HtmlServiceProvider::class,

        /*
         * Application Service Providers...
         */
        App\Providers\AppServiceProvider::class,
        App\Providers\AuthServiceProvider::class,
        App\Providers\EventServiceProvider::class,
        App\Providers\RouteServiceProvider::class,

        /*
         * Application Service Providers Goutte
         */
        Weidner\Goutte\GoutteServiceProvider::class,

        /*
        * Application Service Providers Goutte
        */
        Thujohn\Twitter\TwitterServiceProvider::class,

        /*
        * Application Service Providers Facebook Integration
        */

        SammyK\LaravelFacebookSdk\LaravelFacebookSdkServiceProvider::class,

        /*
        * Application Service Providers Instagram Integration
        */

    Ramsey\Laravel\OAuth2\Instagram\InstagramServiceProvider::class

    ],

    /*
    |--------------------------------------------------------------------------
    | Class Aliases
    |--------------------------------------------------------------------------
    |
    | This array of class aliases will be registered when this application
    | is started. However, feel free to register as many as you wish as
    | the aliases are "lazy" loaded so they don't hinder performance.
    |
    */

    'aliases' => [

        'App' => Illuminate\Support\Facades\App::class,
        'Artisan' => Illuminate\Support\Facades\Artisan::class,
        'Auth' => Illuminate\Support\Facades\Auth::class,
        'Blade' => Illuminate\Support\Facades\Blade::class,
        'Cache' => Illuminate\Support\Facades\Cache::class,
        'Config' => Illuminate\Support\Facades\Config::class,
        'Cookie' => Illuminate\Support\Facades\Cookie::class,
        'Crypt' => Illuminate\Support\Facades\Crypt::class,
        'DB' => Illuminate\Support\Facades\DB::class,
        'Eloquent' => Illuminate\Database\Eloquent\Model::class,
        'Event' => Illuminate\Support\Facades\Event::class,
        'File' => Illuminate\Support\Facades\File::class,
        'Gate' => Illuminate\Support\Facades\Gate::class,
        'Hash' => Illuminate\Support\Facades\Hash::class,
        'Lang' => Illuminate\Support\Facades\Lang::class,
        'Log' => Illuminate\Support\Facades\Log::class,
        'Mail' => Illuminate\Support\Facades\Mail::class,
        'Password' => Illuminate\Support\Facades\Password::class,
        'Queue' => Illuminate\Support\Facades\Queue::class,
        'Redirect' => Illuminate\Support\Facades\Redirect::class,
        'Redis' => Illuminate\Support\Facades\Redis::class,
        'Request' => Illuminate\Support\Facades\Request::class,
        'Response' => Illuminate\Support\Facades\Response::class,
        'Route' => Illuminate\Support\Facades\Route::class,
        'Schema' => Illuminate\Support\Facades\Schema::class,
        'Session' => Illuminate\Support\Facades\Session::class,
        'Storage' => Illuminate\Support\Facades\Storage::class,
        'URL' => Illuminate\Support\Facades\URL::class,
        'Validator' => Illuminate\Support\Facades\Validator::class,
        'View' => Illuminate\Support\Facades\View::class,
        'Goutte' => Weidner\Goutte\GoutteFacade::class,
        'Twitter' => Thujohn\Twitter\Facades\Twitter::class,
        'Form' => Collective\Html\FormFacade::class,
        'Html' => Collective\Html\HtmlFacade::class,
        'Facebook' => SammyK\LaravelFacebookSdk\FacebookFacade::class,
    'Instagram' => Ramsey\Laravel\OAuth2\Instagram\Facades\Instagram::class,
        'Uuid' => Webpatser\Uuid\Uuid::class,

    ],

];
DanDvoracek commented 7 years ago

Alright, I think I got it working now... I had to actually ssh the vagrant box, run 'php artisan config:clear' and then 'php artisan vendor:publish'. I'm not sure why I had to run it inside the box.. Not a master on that side but it seemed to have worked for now. I'll keep you posted if anything else happens, as I'm now ready to tackle this.

It's maybe worth to write a line about that in the doc if some other noobs like me come across the same issue ;)

Again thanks for the plugin and the help!

ramsey commented 7 years ago

Glad to hear you got it working. To answer your question about the "paths," these aren't paths but namespaces, so they don't directly relate to the filesystem path of the file. If you look at the namespace for the Instagram facade, you'll see it's:

Ramsey\Laravel\OAuth2\Instagram\Facades

See here. So, the "path" (or "namespace," rather) is correct as Ramsey\Laravel\OAuth2\Instagram\Facades\Instagram.

I hope that helps clarify a bit.

DanDvoracek commented 7 years ago

Makes sense ;) Thanks!