【问题标题】:JSON and file_get_contentsJSON 和 file_get_contents
【发布时间】:2015-10-10 17:37:10
【问题描述】:

我真的有一个大问题,我创建了一个登录 API,但我遇到了一个问题,当我从 URL 访问我的网站时,它给了我代码:

{
  "status": 200,
  "user_data": {
    "username": "",
    "email": "",
    "first_name": "",
    "last_name": "",
    "gender": "",
    "avatar": "",
    "cover": ""
  }
}

这意味着我已经成功接收到数据,但是当我试图通过 file_get_contents() 获取数据时;它不起作用,并开始从发件人服务器给我 php 错误:

{
  "errors": {
    "error_id": 2,
    "error": "User not logged in"
  }
}

这意味着用户没有登录,但是当我直接访问URL时我已经登录了,

问题是我如何生成 JSON 数据以发送它并从另一个服务器或域(如 Facebook 图形或 soundcloud API)接收它,它们都在使用 file_get_contents(); p>

【问题讨论】:

  • 如果你使用 curl 你可以处理一个正常的会话,否则我建议你添加一个login via API 函数。第一步使用帖子(用户名和密码)登录您的 API,成功后 API 应该返回一个令牌。然后,您必须将令牌放在您发出的每个请求上(以识别用户)。令牌应该有时间存在。
  • @swidmann 感谢您的回答,我了解您,但是令牌如何工作?我应该把它存放在哪里?从另一台服务器读取它?
  • 那么您应该将令牌从您的 API 存储在数据库中,您可以在其中使用 API 登录。注意:这只是一种方法,可能有一些更好的方法,但我认为它适用于您的情况,请记住令牌不应永远有效
  • 嗯,但是从他们那里接收数据怎么样?这就像“从 api_tokens where token = 'XXX' 中选择 user_id; 然后获取数据然后将其解码为 json?它会工作吗?
  • 是的类似的东西,如果你总是获取 api_token 你知道它是哪个用户,如果用户在数据库中并且令牌仍然有效,你可以提供用户请求的其他信息.顺便说一句,如果它是敏感数据,我总是更喜欢具有真实会话和后身份验证的“卷曲”方式

标签: php json server file-get-contents


【解决方案1】:

您的 PHP 脚本应该如何知道您已使用浏览器登录?请看一下oauth2。您必须实现授权脚本以访问用户数据的可能性。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-10
    • 2012-06-19
    • 1970-01-01
    • 2012-07-04
    • 2013-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多