Search code examples
androidin-app-billing

InappBilling Error- authentication is required. you need to sign into your google account


I am trying to make a demo of inappbilling. I followed this tutorial for studying this.

Lemme tell the steps I followed for doing this task

  1. I used the below mentioned code

    package com.ohn.inappbilling;
    
    import android.content.Intent;
    import android.os.Bundle;
    import android.support.v7.app.ActionBarActivity;
    import android.util.Log;
    import android.view.View;
    import android.widget.Button;
    
    import com.hello.inappbilling.util.IabHelper;
    import com.hello.inappbilling.util.IabResult;
    import com.hello.inappbilling.util.Inventory;
    import com.hello.inappbilling.util.Purchase;
    import com.ohn.inappbilling.R;
    
    public class MainActivity extends ActionBarActivity {
    
    private static final String TAG = "com.hello.inappbilling";
    static final String ITEM_SKU = "com.buttonclick";
    IabHelper mHelper;
    private Button clickButton;
    private Button buyButton;
    
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        buyButton = (Button) findViewById(R.id.buyButton);
        clickButton = (Button) findViewById(R.id.clickButton);
        clickButton.setEnabled(false);
        String base64EncodedPublicKey = "******";
    
        mHelper = new IabHelper(this, base64EncodedPublicKey);
    
        mHelper.startSetup(new IabHelper.OnIabSetupFinishedListener() {
            public void onIabSetupFinished(IabResult result) {
                if (!result.isSuccess()) {
                    Log.d(TAG, "In-app Billing setup failed: " + result);
                } else {
                    Log.d(TAG, "In-app Billing is set up OK");
                }
            }
        });
        //throw new RuntimeException();
    }
    
    public void buttonClicked(View view) {
        clickButton.setEnabled(false);
        buyButton.setEnabled(true);
    }
    
    public void buyClick(View view) {
         mHelper.launchPurchaseFlow(this, ITEM_SKU, 10001,   
               mPurchaseFinishedListener, "mypurchasetoken");
    }
    
    @Override
    protected void onActivityResult(int requestCode, int resultCode, 
         Intent data) 
    {
          if (!mHelper.handleActivityResult(requestCode, 
                  resultCode, data)) {     
            super.onActivityResult(requestCode, resultCode, data);
          }
    }
    
    IabHelper.OnIabPurchaseFinishedListener mPurchaseFinishedListener 
    = new IabHelper.OnIabPurchaseFinishedListener() {
    public void onIabPurchaseFinished(IabResult result, 
                    Purchase purchase) 
    {
       if (result.isFailure()) {
          // Handle error
          return;
     }      
     else if (purchase.getSku().equals(ITEM_SKU)) {
         consumeItem();
        buyButton.setEnabled(false);
    }
    
    }
    
    
    };
    
    public void consumeItem() {
        mHelper.queryInventoryAsync(mReceivedInventoryListener);
    }
    
    IabHelper.QueryInventoryFinishedListener mReceivedInventoryListener 
       = new IabHelper.QueryInventoryFinishedListener() {
           public void onQueryInventoryFinished(IabResult result,
              Inventory inventory) {
    
    
              if (result.isFailure()) {
              // Handle failure
              } else {
                     mHelper.consumeAsync(inventory.getPurchase(ITEM_SKU), 
                mConsumeFinishedListener);
              }
        }
    };
    
    IabHelper.OnConsumeFinishedListener mConsumeFinishedListener =
    new IabHelper.OnConsumeFinishedListener() {
     public void onConsumeFinished(Purchase purchase, 
           IabResult result) {
    
    if (result.isSuccess()) {                
          clickButton.setEnabled(true);
    } else {
           // handle error
    }
    }
    };
    
    @Override
    public void onDestroy() {
        super.onDestroy();
        if (mHelper != null) mHelper.dispose();
        mHelper = null;
    }
    
    }
    
  2. I created apk using File-Export-AndroidProject and uploaded this in alphatesting.

  3. I added users(Google group) in Manage list of testers in alpha testing.

  4. I added the product in In-app Product and give id to it com.buttonclick

  5. In settings in Gmail accounts with testing access I added Gmail id's here also. None of the id is developer id.

Can anyone tell solution for this problem. I have tried all the solutions available on StackoverFlow.


Solution

  • I found solution for this problem.

    I published this apk on playstore and then I downloaded apk from playstore and ran that and It worked fine

    I think the reason behind this problem is The google account that I was using for testing may be it was not the main account.