繁体   English   中英

使用Facebook iOS SDK登录到后端帐户

[英]Login to a backend account with facebook iOS SDK

我有一个iOS应用程序,当您登录或创建帐户时,它会使用我创建的存储所有信息的后端登录/注册。

问题是,当我使用facebook SDK登录时,找不到任何可以存储的唯一信息来验证将来的使用。

例如,如果我用用户的电子邮件地址登录,他们使用他们的电子邮件和密码进行身份验证,那么以后,当我进行API调用时,我将使用用户唯一的令牌对所有这些调用进行身份验证,该令牌位于iOS上应用程序和服务器,并且该令牌过期后,它将向iOS应用程序发送一个新令牌,这样我就可以继续进行通信。

我可以从可存储在服务器上的Facebook API上获取什么信息,以用来验证用户身份?

我知道有一个令牌,但是它很快就会过期。 我正在使用Facebook iOS SDK 4.7.0

您想要将获取的访问令牌发送回服务器。 在服务器上,将您的访问令牌和您的应用程序ID结合起来以获取appsecret_proof。 appsecret_proof是sha256哈希。 向Facebook发送如下请求:

curl \
  -F 'access_token=<access_token>' \
  -F 'appsecret_proof=<app secret proof>' \
  -F 'batch=[{"method":"GET", "relative_url":"me"},{"method":"GET", "relative_url":"me/friends?limit=50"}]' \
  https://graph.facebook.com

如果您获得成功的响应,那么您就知道这是一个合法请求,可以将用户登录。最酷的部分是访问令牌已过期。 如果等待太久而无法发出请求,则会返回失败:

{
  "error": {
    "message": "Error validating access token: Session does not match current stored session. This may be because the user changed the password since the time the session was created or Facebook has changed the session for security reasons.",
    "type": "OAuthException",
    "code": 190,
    "error_subcode": 460,
    "fbtrace_id": "GG1nF4eGYKI"
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM