将对象保存到会话或cookie中

时间:2018-05-13 18:01:33

标签: laravel instagram-api

我正在使用Instagram API libraries将用户连接到Instagram个人资料,然后使用它进行操作。所以,正如Instagram API wiki所说:

  

初始化InstagramAPI课程后,您必须登录帐户。

$ig = new \InstagramAPI\Instagram(); 
$ig->login($username, $password); // Will resume if a previous session exists.

我初始化了InstagramAPI类,然后调用了$ig->login('username', 'password');。但我必须在我需要与Instagram合作的每个功能中调用它...

那么如何保存此对象$ig以便将来在其他控制器中使用它而不再调用login()?我可以将$ig对象保存到会话或cookie文件中吗?

P.S。我认为保存到会话中并不是解决这个问题的安全方法。

UPD :我试图将$ig对象保存到会话中,但是如果非常大且会话也会停止工作。

1 个答案:

答案 0 :(得分:0)

关于您在评论部分中提到的register方法,您需要在app\providers目录中创建新的service provider类,并在那里声明register方法例如:

namespace App\Providers;

use InstagramAPI\Instagram;
use Illuminate\Support\ServiceProvider;

class InstagramServiceProvider extends ServiceProvider
{
    public function register()
    {
        // Use singleton because, always you need the same instance
        $this->app->singleton(Instagram::class, function ($app) {
            return new Instagram();
        });
    }
}

然后,在InstagramServiceProvider文件中的providers数组中添加新创建的config/app.php类,例如:

'providers' => [
    // Other ...
    App\Providers\InstagramServiceProvider::class,
]

现在,在任何控制器类中,只要您需要Instagram实例,只需调用App::make('InstagramAPI\Instagram')或只需调用全局函数app('InstagramAPI\Instagram'),甚至可以typehint 1}}任何方法/构造函数中的类等。一些例子:

$ig = App::make('InstagramAPI\Instagram');
$ig = App::make(Instagram::class); // if has use statement at the top fo the class
$ig = app('...');

在作为依赖项的类方法中:

public function someMethod(Instagram $ig)
{
    // You can use $ig here
}

希望这有帮助,但正确阅读documentation,将会记录所有内容。