【问题标题】:How can I send trade offer我如何发送交易报价
【发布时间】:2018-04-22 03:16:21
【问题描述】:

实际上,我正在开发 Steam 交易报价功能,但我遇到了问题。我已经下载了 Steam 类库并在 Codeigniter 中实现了它。我正在遵循https://github.com/halipso/php-steam-tradeoffers#setupsessionid-cookies 的设置指南。其实我不知道会话ID和cookie:

$steam->setup('sessionID', 'cookies');

sessionIDcookies 是什么?

我已经阅读了它,但没有得到任何解决方案。如何在我的代码中获取和实现它?

【问题讨论】:

  • 有谁能帮帮我吗?

标签: php api codeigniter steam steam-web-api


【解决方案1】:

如果这是在 Laravel 上,您可以发送 _token,他们将其称为 csrf_field


在 CI 中,您可以这样做。 (csrf 生成唯一的会话 id)

路径 - application/config/config.php

$config['csrf_protection'] = TRUE;

在登录表单中,你可以添加这个或者在页面初始化中你可以添加这个

$csrf = array(
        'name' => $this->security->get_csrf_token_name(),
        'hash' => $this->security->get_csrf_hash()
);

<input type="hidden" name="<?=$csrf['name'];?>" value="<?=$csrf['hash'];?>" />

因此,当您保存时,您可以将其添加到会话中。顺便说一句,这个令牌也可以用于 cookie。

阅读此Cross-site request forgery (CSRF)

令牌可以在每次提交时重新生成(默认),也可以在 CSRF cookie 的整个生命周期内保持不变。令牌的默认重新生成提供了更严格的安全性,但由于其他令牌变得无效(后退/前进导航、多个选项卡/窗口、异步操作等),可能会导致可用性问题。您可以通过编辑以下配置参数来更改此行为

源 Codeigniter 文档


如果不在登录页面中,则

最好是这个false,(由于这个令牌可以在每次提交时重新生成(默认)

$config['csrf_regenerate'] = FALSE;

【讨论】:

    【解决方案2】:

    会话 ID 是 Steam 的 UUID,对应于我们的 Steam 配置文件。 cookie 是为了让您保持身份验证。

    这是一个如何获取 sessionID 和 cookie 的示例: https://github.com/SzymonLisowiec/php-steamlogin(不是我的仓库,感谢 SzymonLisowiec)

    【讨论】:

    • 感谢您的回复。我已经实现了此代码,但仍然无法获取 cookie,因为缺少 cookiejar.txt 文件。你有什么想法吗?
    • 我自己没有测试过。从问题来看,它说datapath 必须有chmod 777,因为Curl 正在其中创建文件cookiejar.txt。但请记住,chmod 777 对于生产环境来说过于宽松了。
    • 好的,谢谢现在它正在工作。但由于无效响应,我的工作仍然不完整。我遵循这个但结果显示我无效响应 $invent = array('contextId' => 2, 'appId' => 730); $result = $steam->loadMyInventory($invent);回声 $result;
    • 任何建议
    • 能否提供更多细节?
    【解决方案3】:

    首先doc 的文档说您只需要一个 API KEY 即可将请求和调用发送到端点,因为您使用的类库已帮助您进入您的帐户并获取 API KEY你自己。
    所以通过检查类 SteamTrade 可以解释 setup(sessionId, cookies):

    1. 如果有 API KEY 那么我不需要 Cookie 和 SessionID 停止,否则转到第 2 步。
    2. 获取 API KEY,但您应该向我提供 Cookie 和 sessionid,以便我登录并接受协议并将您的帐户注册为开发者帐户,请执行第 1 步否则显示错误。


    注意:所有以这种格式完成的调用都不需要 SessionID 和 Cookie,只有在不提供 API KEY 的情况下。

    http://api.steampowered.com/interface-name/method-name/version/?key=apikey&format=format
    截图:
    展示如何使用 firefox 检查器 cookie 选项卡获取 sessionid 和 cookie

    【讨论】:

    • 感谢您的回复。我已经获得了会话 ID 和 cookie,但我仍然面临“无效响应”错误。例如,我正在调用 $partnerinventorydata = array( 'partnerSteamId' => '76561198345631230', 'appId' => '730', 'contextId'=>'2', 'tradeOfferId'=>true, 'language'=>'英语' ); $getpartnerInventoryData=$steam->loadPartnerInventory($partn‌​erinventorydata); print_r($getpartnerInventoryData);然后它给了我无效的响应错误。你能帮忙解决这个错误吗?
    • 首先您必须验证 API KEY 是否已设置!也可以通过编辑类返回响应信息来提供完整的响应。
    猜你喜欢
    • 2015-04-04
    • 2022-12-09
    • 1970-01-01
    • 2021-09-03
    • 1970-01-01
    • 2016-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多