diff --git a/extensions/amp-access/amp-access.md b/extensions/amp-access/amp-access.md index eb31def68703..15f53ec44bbc 100644 --- a/extensions/amp-access/amp-access.md +++ b/extensions/amp-access/amp-access.md @@ -21,7 +21,7 @@ limitations under the License. - + @@ -49,55 +49,55 @@ limitations under the License. The proposed solution gives control to the Publisher over the following decisions and flows: - Create and maintain users - - Control of metering + - Control of metering (allow for a certain number of free views) - Responsibility for the login flow - Responsibility for authenticating the user - Responsibility for access rules and authorization - - Flexibility over access parameters at a per-document level + - Flexibility over access parameters on a per-document basis The solution comprises the following components: -1. [**AMP Reader ID**][2]: provided by AMP ecosystem, this is a unique identifier of the reader as seen by AMP. +1. [**AMP Reader ID**][2]: provided by the AMP ecosystem, this is a unique identifier of the Reader as seen by AMP. 2. [**Access Content Markup**][3]: authored by the Publisher, defines which parts of a document are visible in which circumstances. 3. [**Authorization endpoint**][4]: provided by the Publisher, returns the response that explains which part of a document the Reader can consume. 4. [**Pingback endpoint**][5]: provided by the Publisher, is used to send the “view” impression for a document. -5. [**Login Link and Login Page**][6]: allows the publisher to authenticate the Reader and connect their identity with AMP Reader ID. +5. [**Login Link and Login Page**][6]: allows the Publisher to authenticate the Reader and connect their identity with AMP Reader ID. -Google AMP Cache returns the document to the Reader with some sections obscured using Access Content Markup. The AMP Runtime calls the Authorization endpoint and uses the response to either hide or show different sections as defined by the Access Content Markup. After the document has been shown to the Reader, AMP Runtime calls the Pingback endpoint that can be used by the Publisher to update the countdown meter. +Google AMP Cache returns the document to the Reader with some sections obscured using Access Content Markup. The AMP Runtime calls the Authorization endpoint and uses the response to either hide or show different sections as defined by the Access Content Markup. After the document has been shown to the Reader, AMP Runtime calls the Pingback endpoint that can be used by the Publisher to update the countdown meter (number of free views used). -The solution also allows the Publisher to place in the AMP document a Login Link that launches the Login/Subscribe Page where the Publisher can authenticate the Reader and associate the Reader’s identity in their system with the AMP Reader ID. +The solution also allows the Publisher to place in the AMP document a Login Link that launches the Login/Subscribe page where the Publisher can authenticate the Reader and associate the Reader’s identity in their system with the AMP Reader ID. In its basic form, this solution sends the complete (though obscured) document to the Reader and simply shows/hides restricted sections based on the Authorization response. However, the solution also provides the “server” option, where the restricted sections can be excluded from the initial document delivery and downloaded only after the authorization has been confirmed. -Supporting AMP Access requires Publisher to implement the components described above. Access Content Markup and Authorization endpoint are required. Pingback endpoint and Login Page are optional. +Supporting AMP Access requires that the Publisher implement the components described above. Access Content Markup and Authorization endpoint are required. Pingback endpoint and Login Page are optional. ### AMP Reader ID -To assist access services and use cases, AMP Access introduces the concept of the *Reader ID*. +To assist access services and use cases, AMP Access introduces the concept of *Reader ID*. -The Reader ID is an anonymous and unique ID created by the AMP ecosystem. It is unique for each reader/publisher pair. i.e., a Reader is identified differently to two different publishers. It is a non-reversible ID. The Reader ID is included in all AMP/Publisher communications. Publishers must use the Reader ID to identify the Reader and map it to their own identity systems. +The Reader ID is an anonymous and unique ID created by the AMP ecosystem. It is unique for each Reader/Publisher pair - a Reader is identified differently to two different Publishers. It is a non-reversible ID. The Reader ID is included in all AMP/Publisher communications. Publishers must use the Reader ID to identify the Reader and map it to their own identity systems. The Reader ID is constructed on the user device and intended to be long-lived. However, it follows the normal browser storage rules, including those for incognito windows. The intended lifecycle of a Reader ID is 1 year between uses or until the user clears their cookies. The Reader IDs are not currently shared between devices. -The Reader ID is constructed similar to the mechanism used to build ExternalCID described [here](https://docs.google.com/document/d/1f7z3X2GM_ASb3ZCI_7tngglxwS6WoWi1EB3aKzdf6vo/edit#heading=h.hyyaxi8m42a). +The Reader ID is constructed similarly to the mechanism used to build ExternalCID described [here](https://docs.google.com/document/d/1f7z3X2GM_ASb3ZCI_7tngglxwS6WoWi1EB3aKzdf6vo/edit#heading=h.hb9q0wpwwhuf). An example Reader ID is `amp-OFsqR4pPKynymPyMmplPNMvxSTsNQob3TnK-oE3nwVT0clORaZ1rkeEz8xej-vV6`. ### AMP Access and Cookies -Even though some of the Publisher's own authentication cookies may be available at the time of the Authorization and Pingback requests, the cookies should only be used for internal mapping. There are no guarantees that the Publisher will be able to read or write cookies given all surfaces and platforms where an AMP document can be embedded. The Reader ID is the only identifier that is guaranteed to work. +Even though some of the Publisher’s own authentication cookies may be available at the time of the Authorization and Pingback requests, the cookies should only be used for internal mapping. There are no guarantees that the Publisher will be able to read or write cookies given all surfaces and platforms where an AMP document can be embedded. The Reader ID is the only identifier that is guaranteed to work. -This means, in particular, that features such as metering and first-click-free implementation have to rely on the AMP Reader ID and server-side storage. +This means, in particular, that features such as metering and first-click-free have to rely on the AMP Reader ID and server-side storage. ### Access Content Markup -Access Content Markup determines which sections are visible or hidden based on the authorization response returned from the Authorization endpoint. It is described via special markup attributes. +Access Content Markup determines which sections are visible or hidden based on the Authorization response returned from the Authorization endpoint. It is described via special markup attributes. ### Authorization Endpoint -Authorization is an endpoint provided by the publisher and called by AMP Runtime or Google AMP Cache. It is a credentialed CORS GET endpoint. This endpoint returns the access parameters that can be used by the Content Markup to hide or show different parts of the document. +Authorization is an endpoint provided by the publisher and called by the AMP Runtime or Google AMP Cache. It is a credentialed CORS GET endpoint. This endpoint returns the access parameters that can be used by the Content Markup to hide or show different parts of the document. ### Pingback Endpoint -Pingback is an endpoint provided by the publisher and called by AMP Runtime or Google AMP Cache. It is a credentialed CORS POST endpoint. AMP Runtime calls this endpoint automatically when the Reader has started viewing the document. This endpoint is also called after the Reader has successfully completed the Login Flow. On of the main goals of the Pingback is for the Publisher to update metering information. +Pingback is an endpoint provided by the publisher and called by the AMP Runtime or Google AMP Cache. It is a credentialed CORS POST endpoint. AMP Runtime calls this endpoint automatically when the Reader has started viewing the document. This endpoint is also called after the Reader has successfully completed the Login Flow. On of the main goals of the Pingback is for the Publisher to update metering information. Pingback optional. It can be disabled by setting `noPingback` configuration property to `true`. @@ -165,7 +165,7 @@ When configuring the URLs for various endpoints, the Publisher can use substitut | CANONICAL_URL | The canonical URL of this AMP Document. | | DOCUMENT_REFERRER | The Referrer URL. | | VIEWER | The URL of the AMP Viewer. | -| RANDOM | A random number. Helpful to avoid browser cache. | +| RANDOM | A random number. Helpful to avoid browser caching. | Here’s an example of the URL extended with Reader ID, Canonical URL, Referrer information and random cachebuster: ```text @@ -225,7 +225,7 @@ Here: - *subscriber* is a boolean field in the authorization response returned by the Authorization endpoint. This section is hidden by default, which is optional. - This example elects to show full content optimistically. -Here’s another example that shows the disclaimer to the reader about the state of metering: +Here’s another example that shows the disclaimer to the Reader about the state of metering: ```html
DescriptionAMP Access or “AMP paywall and subscription support” gives publishers control over which content can be accessed by a reader and with what restrictions, based on the reader’s subscription status, number of views, and other factors.AMP Access or “AMP paywall and subscription support” gives Publishers control over which content can be accessed by a Reader and with what restrictions, based on the Reader’s subscription status, number of views, and other factors.
Availability