你好!
我想确认一下,是否有 Discourse 的方法可以根据当前用户的所在地来投放内部广告?我了解我们有:House Ads in the official Ad Plugin 用于投放广告,但我只是想知道是否可以通过 Discourse 来获取当前用户的位置。
如果 Discourse 没有这种方法(例如需要第三方工具),我知道我们也有注册时的 IP 地址,是否可以通过这些 IP 地址来确定用户的位置?
谢谢!
你好!
我想确认一下,是否有 Discourse 的方法可以根据当前用户的所在地来投放内部广告?我了解我们有:House Ads in the official Ad Plugin 用于投放广告,但我只是想知道是否可以通过 Discourse 来获取当前用户的位置。
如果 Discourse 没有这种方法(例如需要第三方工具),我知道我们也有注册时的 IP 地址,是否可以通过这些 IP 地址来确定用户的位置?
谢谢!
你好 hyphalos! ![]()
无论是在现有广告插件还是假设的广告插件的上下文中,Discourse 在管理员视图的用户配置文件中都提供了一个内置功能:
该端点是:https://your-discourse.com/admin/users/ip-info.json?ip={user_ip},通过 GET 请求。
您好 @Canapin,
感谢您的快速回复!
我尝试为此编写了一个简短的 Python 脚本,但它只返回一个网页而不是 JSON。当我将 .json 添加到 GET URL 时,它只返回 {}。但是,当我使用用户 ID (https://your-discourse.com/admin/users/{user_id}/ip-info.json?ip={user_ip}) 发出请求时,确实会出现带有 IP 地址的用户信息。
我甚至尝试从浏览器访问该 URL,但只收到“哎呀!该页面不存在或已设为私有。”的提示。
顺便说一句,我们的 Discourse 目前是稳定版本(v3.1.1)。
我想问一下,我是否需要 MaxMind 许可证才能使其正常工作?如果不是,是否有可能提供的端点不正确?我从 /admin/users/{user_id}.json 收到了响应,但出于某种原因,我没有从 /admin/users/ip-info?ip={user_ip} 获得正确的响应。我只从我们的 Discourse 网站收到一个空白的 HTML 网页。
此外,是否有 Discourse 提供的有用端点列表链接,例如您分享的那个?
谢谢!
那是因为它只返回 https://your-discourse.com/admin/users/{user_id}.json 的内容。它忽略了 ip-info 部分,这里不是一个有效的端点。
是的,我没考虑到这一点
,但是的,我认为你可能需要一个 Maxmind 密钥才能返回位置信息。
所以,总结一下:
如果你想获取用户的 IP,你需要向 https://your-discourse.com/admin/users/{user_id}.json 发送一个 GET 请求(需要管理员凭据)。它将返回 IP 地址以及其他用户信息。
如果你想定位 IP 地址,你需要一个 Maxmind 密钥(添加到 app.yml 中),然后向此端点发送一个 GET 请求:https://your-discourse.com/admin/users/ip-info.json?ip={user_ip}。
这里有 API 文档:https://docs.discourse.org/
但并非所有端点都列在这里。Discourse 的 API 非常容易逆向工程:Reverse engineer the Discourse API
感谢 @Canapin,我认为这正是我需要的。我会看看是否能搞定一个 MaxMind 许可证,然后继续。如果我获得了许可证并重新尝试,我会在此更新此帖。谢谢!
您好 @Canapin,
我已经获得了一个免费的 MaxMind 许可证,并且 API https://your-discourse.com/admin/users/ip-info.json?ip={user_ip} . 运行得非常好,谢谢!
我还有一个额外的问题,因为这需要用户 ID 来获取 IP,然后才能调用上面的 API,那么匿名用户该怎么办?如果我们也想为他们提供广告服务,但他们没有用户 ID,该怎么办?这是否仍然可行,还是仅限于已登录用户?
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.