Files
FreshRSS/docs/en/developers/06_GoogleReader_API.md
Inverle 63c8fe1285 docs: Fix broken or dead links (#8548)
* docs: Fix broken or dead links
Used the following commands to find broken links:
1. `lychee -E --dump https://freshrss.github.io/FreshRSS/en/ --include freshrss.github.io --output links.txt`
2. `lychee -v --suggest --archive wayback --timeout 5 -u "Mozilla/5.0 (X11; Linux x86_64; rv:148.0) Gecko/20100101 Firefox/148.0" --files-from links.txt --output output.txt`
3. `cat output.txt`

Then did the same for https://freshrss.github.io/FreshRSS/fr/

We could look into using lychee in CI:
https://github.com/lycheeverse/lychee?tab=readme-ov-file#github-action-usage

* Replace PostgreSQL 16 link with current version

Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>

* Remove paragraph about bug message format

* Update README with official app website links

* Replace broken French images with English versions

* Fix broken Fever API docs link in French docs

* Replace GNU Social link with new one in `shares.php`

---------

Co-authored-by: Alexandre Alapetite <alexandre@alapetite.fr>
2026-03-02 08:21:23 +01:00

103 lines
7.6 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# FreshRSS - Google Reader compatible API implementation
See [Mobile access](../users/06_Mobile_access.md) for general aspects of API access.
See also the [page about our Fever compatible API](06_Fever_API.md) for another possibility (less powerful).
## RSS clients
There are many RSS clients that support the Fever API, but they might understand the API a bit differently.
If your favourite client doesnt work properly with this API, please create an issue and well have a look.
But we can **only** do that for free clients.
## Usage & Authentication
Before you can start using this API, you have to enable and setup API access, which is [documented here](../users/06_Mobile_access.md),
and then reset the users API password.
Then point your mobile application to the `greader.php` address (e.g. `https://freshrss.example.net/api/greader.php`).
## Compatible clients
1. On the same FreshRSS API page, note the address given under “Your API address”, like `https://freshrss.example.net/api/greader.php`
2. Type the API address in a client, together with your FreshRSS username, and the corresponding special API password.
| App | Platform | License |
|:----------------------------------------------------------------------------------:|:-------------------:|:--------------------------------------------------------:|
|[News+](https://github.com/noinnion/newsplus/blob/master/apk/NewsPlus_202.apk) with [News+ Google Reader extension](https://github.com/noinnion/newsplus/blob/master/apk/GoogleReaderCloneExtension_101.apk) |Android|Closed Source (Free), [partially open source](https://github.com/noinnion/newsplus/blob/master/extensions/GoogleReaderCloneExtension/src/com/noinnion/android/newsplus/extension/google_reader/GoogleReaderClient.java)|
|[FeedMe 3.5.3+](https://play.google.com/store/apps/details?id=com.seazon.feedme) |Android |Closed Source (Free) |
|[EasyRSS](https://github.com/Alkarex/EasyRSS) |Android |[GPLv3](https://github.com/Alkarex/EasyRSS/blob/master/license.txt) ([F-Droid](https://f-droid.org/packages/org.freshrss.easyrss/))|
|[Readrops](https://github.com/readrops/Readrops) |Android |[GPLv3](https://github.com/readrops/Readrops/blob/develop/LICENSE) |
|[Fluent Reader Lite](https://hyliu.me/fluent-reader-lite/) |Android, iOS |[BSD-3](https://github.com/yang991178/fluent-reader-lite) |
|[Read You](https://github.com/Ashinch/ReadYou/) |Android |[GPLv3](https://github.com/Ashinch/ReadYou/blob/main/LICENSE)|
|[FocusReader](https://play.google.com/store/apps/details?id=allen.town.focus.reader) |Android |Closed Source(Free) |
|[Newsflash](https://gitlab.com/news-flash/news_flash_gtk/) |Linux |[GPLv3](https://gitlab.com/news-flash/news_flash_gtk/) |
|[lire](https://lireapp.com/) |iOS, macOS |Closed Source |
|[Newsboat 2.24+](https://newsboat.org/) |Linux |[MIT](https://github.com/newsboat/newsboat/blob/master/LICENSE) |
|[Vienna RSS](http://www.vienna-rss.com/) |macOS |[Apache-2.0](https://github.com/ViennaRSS/vienna-rss/blob/master/LICENCE.md) |
|[Reeder Classic](https://www.reederapp.com/classic/) |macOS, iOS |Closed Source |
|[FreshRSS-Notify](https://addons.mozilla.org/firefox/addon/freshrss-notify-webextension/) |Firefox |Open Source |
> See a [better table of compatible clients in our main Readme](https://github.com/FreshRSS/FreshRSS/blob/edge/README.md#apis--native-apps).
## Google Reader compatible API
Examples of basic queries:
```sh
# Initial login, using API password (Email and Passwd can be given either as GET, or POST - better)
curl 'https://freshrss.example.net/api/greader.php/accounts/ClientLogin?Email=alice&Passwd=Abcdef123456'
SID=alice/8e6845e089457af25303abc6f53356eb60bdb5f8
Auth=alice/8e6845e089457af25303abc6f53356eb60bdb5f8
# Examples of read-only requests
curl -s -H "Authorization:GoogleLogin auth=alice/8e6845e089457af25303abc6f53356eb60bdb5f8" \
'https://freshrss.example.net/api/greader.php/reader/api/0/subscription/list?output=json'
curl -s -H "Authorization:GoogleLogin auth=alice/8e6845e089457af25303abc6f53356eb60bdb5f8" \
'https://freshrss.example.net/api/greader.php/reader/api/0/unread-count?output=json'
curl -s -H "Authorization:GoogleLogin auth=alice/8e6845e089457af25303abc6f53356eb60bdb5f8" \
'https://freshrss.example.net/api/greader.php/reader/api/0/tag/list?output=json'
# Retrieve a token for requests making modifications
curl -H "Authorization:GoogleLogin auth=alice/8e6845e089457af25303abc6f53356eb60bdb5f8" \
'https://freshrss.example.net/api/greader.php/reader/api/0/token'
8e6845e089457af25303abc6f53356eb60bdb5f8ZZZZZZZZZZZZZZZZZ
# Get articles, piped to jq for easier JSON reading
curl -s -H "Authorization:GoogleLogin auth=alice/8e6845e089457af25303abc6f53356eb60bdb5f8" \
'https://freshrss.example.net/api/greader.php/reader/api/0/stream/contents/reading-list' | jq .
# Unsubscribe from a feed
curl -H "Authorization:GoogleLogin auth=alice/8e6845e089457af25303abc6f53356eb60bdb5f8" \
-d 'ac=unsubscribe&s=feed/52' 'https://freshrss.example.net/api/greader.php/reader/api/0/subscription/edit'
```
* [Source code of our API implementation](https://github.com/FreshRSS/FreshRSS/blob/edge/p/api/greader.php)
### API documentation from the original Google Reader
* [By Daniel Arowser](https://web.archive.org/web/20130710044440/http://undoc.in/api.html) ([source](https://github.com/arowser/google-reader-api))
* [By Martin Doms](https://web.archive.org/web/20210126115837/https://blog.martindoms.com/2009/10/16/using-the-google-reader-api-part-2/)
* [By Nick Bradbury](https://inessential.com/2013/03/14/google_reader_api_documentation)
* [By Niall Kennedy](https://web.archive.org/web/20170426184845/http://www.niallkennedy.com/blog/2005/12/google-reader-api.html)
* [By Mihai Parparita](https://web.archive.org/web/20140919042419/http://code.google.com/p/google-reader-api/w/list) ([source](https://github.com/mihaip/google-reader-api))
### API documentation from other compatible servers
* [FeedHQ](https://feedhq.readthedocs.io/en/latest/api/index.html)
* [Inoreader](https://www.inoreader.com/developers/)
* [The Old Reader](https://github.com/theoldreader/api)
* [pyrfeed](https://code.google.com/archive/p/pyrfeed/wikis/GoogleReaderAPI.wiki)
* [BazQux](https://github.com/bazqux/bazqux-api)
### Synchronisation strategy
> If you are maintaining a client or planning to develop a new one, please read carefully the following pieces of advice,
as many clients start by having a very inneficient synchronisation strategy.
* [*Synchronisation recommendation* by Alkarex](https://github.com/FreshRSS/FreshRSS/issues/2566#issuecomment-541317776)
* [*Additional synchronisation tips* by Alkarex](https://github.com/jocmp/capyreader/discussions/533#discussioncomment-11341808)
* [*The Right Way to Sync* by BazQux](https://github.com/bazqux/bazqux-api#user-content-the-right-way-to-sync)