如何允许其他网站从您的网站检索数据?

时间:2014-12-18 18:59:31

标签: php json rest laravel laravel-4

  

详情

我是RESTful API&的新手。 Laravel世界。

但是“每个艺术家都是第一个业余爱好者。 - 对吧?” 让我们谈谈。

我有2个网站。我们称之为:

  • A
  • B

如果用户列表+所有关系,网站B都有一个很好的列表。

我想允许网站A访问网站B并加载这些不错的数据。

我从未这样做过。我假设逻辑是:

  • 网站A需要某种api_keys才能访问网站B
  • 然后在api_key匹配后,网站B将数据作为json文件返回到网站A
  • 然后,网站A将收到该json文件,并将其加载到HTML中并显示它。

我的逻辑是否接近?如果我错了,请纠正我。 :)

这是我尝试过的

在做了一些研究之后,我遇到了这个site。我真的很喜欢它。我完成了它。 现在,我有点了解RESTful API。

然后,我遇到了这个site。我发现了这个

filters.php

Route::filter('api', function() {

    // Fetch a user record based on api key
    $user = User::where('api_key', '=', Input::get('api_key'))
                ->take(1)
                ->get();

    if ($user->count() > 0) {
        Auth::onceUsingId($user[0]->id); // Authorize the user for this one request
    } else {
        return Response::view('errors.404', array(), 404)->header('Content-Type', 'application/json');
    }
});

我注意到这个OP,在用户表中存储了api_key

我的问题

  • 我需要像他那样做吗?
  • 这是唯一的方法吗?
  • 有更好/更简单的方法吗?

  • 我可以手动将其设置为random数字+文本,而不是从数据库中获取api_key,而不是像这样的'21sdf364rt7y6r5ty1u28x1h8gt7yt2ert3654871'吗?

  • api_key到期有多长?它甚至是expire吗?我们怎么知道的?

同样,我的主要goal是允许网站A访问网站B中的内容。

1 个答案:

答案 0 :(得分:0)

  

我的逻辑是否接近?

是的,足够接近。

因此,主要目标是访问网站B中的内容。您可以决定B中的内容是否受限制内容。

如果能够访问这些内容的用户有限,是的,您需要一个api密钥。

如果站点B的内容是公共的,您只需打印json数据,而不需要像github那样的任何API密钥:https://api.github.com/users/github