使用Google Apps API Explorer时,我应该将其设置为PageToken值?

时间:2015-03-31 19:24:27

标签: google-api google-oauth google-reseller-api

我们正在尝试接收有关客户的信息,我们得到的是20个结果,也想搜索下一页。应该遍历所有页面直到null,但是在使用Web Explorer时无法创建循环,或者?

应该粘贴什么值来接收所有结果? (将pageToken字段留空只会给我们20个结果。 enter image description here

https://developers.google.com/admin-sdk/reseller/v1/reference/subscriptions/list#try-it

3 个答案:

答案 0 :(得分:0)

为了获得超过20个结果,您必须在" maxResults"中提供一些价值。参数。

maxResults(无符号整数):检索大型列表时,maxResults是每页的最大结果数。 nextPageToken值将带您进入下一页。默认值为20.可接受的值为1到100(包括1和100)。

请查看此页面以获取参考:https://developers.google.com/admin-sdk/reseller/v1/reference/subscriptions/list

希望有所帮助!

答案 1 :(得分:0)

您的问题是您指定的是fields=,但未将nextPageToken作为其中一个字段。这就是响应中没有nextPageToken的原因。通过添加nextPageToken(或完全省略字段),您的第一页结果将包含nextPageToken,您将为下一次调用提供pageToken的值。冲洗,重复,直到你收到没有nextPageToken的回复。对于您的第一个电话,当然pageToken是空白的。

答案 2 :(得分:0)

从一个约翰到另一个约翰...

我没有直接调用REST HTTP端点,但是当使用G Suite Directory API Client Library时,我需要循环浏览多个页面以接收所有结果。

这是我使用的模式。对于G Suite Reseller API,这将非常相似。

/// <summary>
/// List all Members in a Domain Group.
/// <param name="service">DirectoryService object (Google Directory API)</param>
/// <returns>Collection of Member emails</returns>
/// </summary>
public IEnumerable<string> ListGroupMembers(DirectoryService service)
{
    // Set Group key (email address of the Group or id of the Group)
    var groupKey = "email-for-google-group@domain-name.com";

    // Define parameters of request (Group email)
    MembersResource.ListRequest request = service.Members.List(groupKey);

    // Sadly, this won't work
    request.MaxResults = int.MaxValue;

    // And the max page size of response is ONLY 200!

    // So you have to check for the next page token
    // and execute another request if there is one

    do
    {
        // Get Members response for this Group
        Members response = request.Execute();

        // Return the emails in this response page
        foreach (var member in response.MembersValue)
        {
            yield return member.Email;
        }

        // Get next page token
        request.PageToken = response.NextPageToken;

        // Continue loop if next page token is not null
    } while (!string.IsNullOrEmpty(request.PageToken));
}