Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >新铸Wechat+友圈Bug修复

新铸Wechat+友圈Bug修复

作者头像
Dabenshi
发布于 2024-04-26 02:18:31
发布于 2024-04-26 02:18:31
10100
代码可运行
举报
文章被收录于专栏:DabenshiDabenshi
运行总次数:0
代码可运行

原文参考《用FreshRSS 实现友圈rss订阅

这里需要特别注意一下原作者提供的PHP代码中:域名后面需要加/p/,否则会报错:Login failed. 登录失败的问题。以下是调整后的PHP代码,将 https://example.com 修改为自己的域名即可!

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<?php
/**
 * 获取最新订阅文章并生成JSON文件
 */
function getAllSubscribedArticlesAndSaveToJson($user, $password)
{
    $apiUrl = 'https://example.com/p/api/greader.php';
    $loginUrl = $apiUrl . '/accounts/ClientLogin?Email=' . urlencode($user) . '&Passwd=' . urlencode($password);
    $loginResponse = curlRequest($loginUrl);
    if (strpos($loginResponse, 'Auth=') !== false) {
        $authToken = substr($loginResponse, strpos($loginResponse, 'Auth=') + 5);
        $articlesUrl = $apiUrl . '/reader/api/0/stream/contents/reading-list?&n=30';
        $articlesResponse = curlRequest($articlesUrl, $authToken);
        $articles = json_decode($articlesResponse, true);
        if (isset($articles['items'])) {
            usort($articles['items'], function ($a, $b) {
                return $b['published'] - $a['published'];
            });
            $subscriptionsUrl = $apiUrl . '/reader/api/0/subscription/list?output=json';
            $subscriptionsResponse = curlRequest($subscriptionsUrl, $authToken);
            $subscriptions = json_decode($subscriptionsResponse, true);
            if (isset($subscriptions['subscriptions'])) {
                $subscriptionMap = array();
                foreach ($subscriptions['subscriptions'] as $subscription) {
                    $subscriptionMap[$subscription['id']] = $subscription;
                }
                $formattedArticles = array();
                foreach ($articles['items'] as $article) {
                    $desc_length = mb_strlen(strip_tags(html_entity_decode($article['summary']['content'], ENT_QUOTES, 'UTF-8')), 'UTF-8');
                    if ($desc_length > 20) {
                        $short_desc = mb_substr(strip_tags(html_entity_decode($article['summary']['content'], ENT_QUOTES, 'UTF-8')), 0, 99, 'UTF-8') . '...';
                    } else {
                        $short_desc = strip_tags(html_entity_decode($article['summary']['content'], ENT_QUOTES, 'UTF-8'));
                    }
                    
                    $formattedArticle = array(
                        'site_name' => $article['origin']['title'],
                        'title' => $article['title'],
                        'link' => $article['alternate'][0]['href'],
                        'time' => date('Y-m-d H:i', $article['published']),
                        'description' => $short_desc,
                    );

                    $subscriptionId = $article['origin']['streamId'];
                    if (isset($subscriptionMap[$subscriptionId])) {
                        $subscription = $subscriptionMap[$subscriptionId];
                        $iconUrl = $subscription['iconUrl'];
                        $filename = 'https://example.com/p/'.substr($iconUrl, strrpos($iconUrl, '/') + 1);
                        $formattedArticle['icon'] = $filename;
                    }

                    $formattedArticles[] = $formattedArticle;
                }

                saveToJsonFile($formattedArticles);
                return $formattedArticles;
            } else {
                echo 'Error retrieving articles.';
            }
        } else {
            echo 'Error retrieving articles.';
        }
    } else {
        echo 'Login failed.';
    }
    return null;
}
function curlRequest($url, $authToken = null)
{
    $ch = curl_init($url);
    if ($authToken) {
        $headers = array(
            'Authorization: GoogleLogin auth=' . $authToken,
        );
        curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    }
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $response = curl_exec($ch);
    curl_close($ch);
    return $response;
}
/**
 * 将数据保存到JSON文件中
 */
function saveToJsonFile($data)
{
    $json = json_encode($data, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
    file_put_contents('output.json', $json);
    echo '数据已保存到JSON文件中';
}

// 调用函数并提供用户名和密码
getAllSubscribedArticlesAndSaveToJson('user', 'password');

一切都很顺利,完成之际既然报错了,我真的裂开了啊。写了很久...不甘心,求助 @obaby 以及原作者 @若志随笔 均无果!后来自己摸索了好几天,该检查的地方都检查了,不该检查的地方也检查了,依然无解!以失败告终。

报错内容如下,鄙人不吝赐教各界大佬🤝

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Error retrieving articles. 

无奈之下不得不重新优化原逻辑,调整之后的效果很棒。迄今为止没有发现过一次报错的情况,看来问题已经解决了!一时兴起重写了朋友圈逻辑和样式,当然还没有集成到博客,因为原逻辑在优化之后没有问题了,所以暂时不打算折腾了,独立 Wechat 页看这里(左侧栏加了 Wechat 入口,全程实时更新)基站依然是 FreshRSS

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-04-25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
PHP46 个非常有用的代码片段
在编写代码的时候有个神奇的工具总是好的!下面这里收集了 40+ PHP 代码片段,可以帮助你开发 PHP 项目。
用户7657330
2020/08/14
1.5K0
3kCTF2021
一段时间没打国际赛,最近陆队正在组建一支打国际赛的战队,我也混进去划了一下水,上周末我们也打了第一场国际赛试试水(虽然我在打国赛没怎么看题目),不过初次试水师傅们都很给力,个人认为成绩还算可以(No.9):
HhhM
2022/08/10
1.4K0
3kCTF2021
微信JSAPI支付PHP源码
2、公众平台,用户在网页授权页同意授权给公众号后,微信会将授权数据传给一个回调页面,回调页面需在此域名下,以确保安全可靠。
用户6493868
2022/03/09
5.8K0
2019 PHP 安全指南
2019 年,大多数的科技工作者 — 尤其是 Web 开发者 — 必须摈弃掉关于开发安全 PHP 应用的老一套。这对那些不相信能够开发出安全的 PHP 应用的人来说尤其重要.
猿哥
2019/06/17
1.2K0
微擎 CMS:从 SQL 到 RCE
该处的注入漏洞网上没有出现过分析文章,因此本文就来分析一下该处 SQL 注入的利用。
p4nda
2023/01/03
3.9K0
微擎 CMS:从 SQL 到 RCE
别找了,小程序实现isbn扫码获取图书信息2022最新可用(保姆级教程内附接口)
大家好,这篇文章详细的介绍了isbn接口的使用,可以实现自给自足,不用去网上买接口,博主最近在开发芒果校园参加比赛,二手市场若能直接扫描isbn获取图书详情那真的是很方便,于是在网上看到了很多接口,我们来看一下我的踩坑经历:由于版权原因 现在直接上成品 目前有以下获取到isbn接口的办法:
德宏大魔王
2023/08/08
6230
别找了,小程序实现isbn扫码获取图书信息2022最新可用(保姆级教程内附接口)
一篇文章深入学习SSRF漏洞
博客原文地址: https://hack-for.fun/posts/20200120/
IFONLY@CUIT
2020/02/19
2.9K0
Pikachu漏洞平台通关记录
开始复习最基础的Web漏洞,查漏补缺,打好基础,我也尽量把文章写得详细一些,希望对刚入门的小白能有一些帮助。
小简
2023/01/01
2.9K0
Pikachu漏洞平台通关记录
PHP 高级工程面试题汇总
勾股定理,矩形是对角线相等的四边形。只要任意三点不在一条直线上,任选一点,求这一点到另外三点的长度的平方,两个短的之和如果等于最长的,那么这就是矩形。
码农编程进阶笔记
2021/07/20
1.1K0
code-breaking2018
这题十分简短精悍,应该是需要找到一个在[a-z0-9_]之外的字符放置在函数前而不影响函数的调用,简单传入:
HhhM
2022/08/10
1.3K0
code-breaking2018
CTFSHOW终极考核
ctfshow{060ae7a27d203604baeb125f939570ef}
故里[TRUE]
2024/02/24
5950
CTFSHOW终极考核
【教程】handsome主题个性化备忘录
复制这段内容并添加在前面,handsome主题可以在 开发者设置 自定义输出body 尾部的HTML代码中添加。
听闻所见
2023/08/02
1.7K0
【教程】handsome主题个性化备忘录
[PHP] 2018年终总结
========================================================================== 2018年12月29日 记录:
唯一Chat
2019/09/10
2.7K0
通达OAの漏洞合集
两三个月之前实习的时候通达OA的漏洞学习笔记,赶紧发了清一下库存,免得文件夹吃灰。
h0cksr
2023/05/18
5.8K0
渗透测试常规操作记录(下)
Linux 操作系统&内核版本&环境变量 >cat /etc/issue >cat /etc/*-release >cat /etc/lsb-release >cat /etc/redhat-release cat /proc/version >uname -a >uname -mrs >rpm -q kernel >dmesg | grep Linux >ls /boot | grep vmlinuz- >cat /etc/profile >cat /etc/bashrc >cat ~/.bash_pr
天钧
2020/10/23
5.8K0
渗透测试常规操作记录(下)
[日常] 面试知识点总结(持续更新)
数据结构和算法: 物理结构和逻辑结构 1.逻辑结构(集合结构,线性结构,树形结构,图形结构) 2.物理结构一般是讲内存,顺序存储结构,链式存储结构 浅谈算法中,高斯算法从1加到100,循环的话是100次,高斯的方法只需要一次 1.推导大O阶:O(1) O(n) O(n^2) O(logn) 1.常数1取代时间所有加法常数 2.只保留最高项 3.去除项相乘的常数,去掉系数
唯一Chat
2019/09/10
5K0
相关推荐
PHP46 个非常有用的代码片段
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验