title: Does queryPurchases() from Play Billing Library guarantees retrieving a valid purchase?
body: <p>I'm using the Google Play Billing Library and I read the documentation and all questions about validating the purchases on the server and how to inquiry the purchases.</p>
  
  <p>However, some points are still not clear and I couldn't find answers to them here.</p>
  
  <p>To retrieve purchases the next time the user launches the app, the documentation says we should use <code>BillingClient.queryPurchases()</code> and it says about the list obtained from this method:</p>
  
  <blockquote>
    <p>As long as the in-app product is on this list, the user should have
    access to it.</p>
  </blockquote>
  
  <p>What I understand from this is that queryPurchases() alone guarantees that the user really bought the item and he must get access to it.</p>
  
  <p>Is this True?</p>
  
  <ul>
  <li>If Yes, then why we don't just use this method right after the user
  makes a purchase as a validation instead of validating it on the
  server?</li>
  <li>If No, how can I provide access for the user if I don't want to
  validate his purchase on my server each time he launches the app?</li>
  <li>If I saved the purchase on a local database after the first
  validation and inquired it when the app launches to grant user access
  to his items, is this a secure approach or this database can be
  manipulated from a malicious user to grant himself access to the
  premium content?</li>
  </ul>