首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >保存Facebook signed_request?

保存Facebook signed_request?
EN

Stack Overflow用户
提问于 2011-02-21 13:38:55
回答 1查看 1.3K关注 0票数 2

情况

我正在玩新的Facebook iFrame页面标签。我正在使用signed_request获取有关应用程序、页面和用户的一些事实。

挑战

Facebook仅在iframe的第一次调用时通过$_REQUEST提供signed_request参数。问题是第二次访问parms,例如对于ajax请求。

,我就是这样做的,

我像这样扩展了PHP以将signed_request存储在cookie中。

代码语言:javascript
运行
复制
/**
 * The name of the Cookie that contains the session.
 * @return String the cookie name
 */
protected function getSessionSignedRequestCookieName() {
    return 'fbs_sr_' . $this->getAppId();
}

/**
 * Saves the signed_request as a browser coookie
 * @return void;
 */
protected function saveSignedRequestAsCookie($signedRequest) {
    $cookieName = $this->getSessionSignedRequestCookieName();

    setcookie($cookieName, serialize($signedRequest));
}

/**
 * Returns the SigndRequest from $_COOKIE
 * @return array
 */
public function getSignedRequestFromCookie() {
    $cookieName = $this->getSessionSignedRequestCookieName();

    if(isset($_COOKIE[$cookieName])) {
        $this->signedRequest = $_COOKIE[$cookieName];
        return unserialize($this->signedRequest);
    } else {
        return NULL;
    }
}

/**
 * Returns the data from a signed_request token provided by $_REQUEST or $_SESSION
 * @return array The decoede signed Request
 */
public function getSignedRequest() {
    $signedRequest = parent::getSignedRequest();

    if($signedRequest != NULL) {
        $this->saveSignedRequestAsCookie($signedRequest);
        return $signedRequest;
    } else {
        return $this->getSignedRequestFromCookie();
    }
}

你认为*我是一个好主意还是一个糟糕的解决办法?有什么建议/改进吗?

EN

回答 1

Stack Overflow用户

发布于 2011-04-15 20:29:29

建议的解决方案对我来说有一个小缺陷:非序列化返回一个空对象,因此我保存了签名请求的base64编码的json格式( Facebook发送给画布应用程序的内容)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5066645

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档