Below shown what I have done so far, after I successfully developed my application with a single Google account.
I have created another Google account with Google Cloud Storage enabled, in order to test whether I can register an API project with one account or not, and then use this client ID (& client secret) to list/create buckets or objects to another account. i.e. to go through steps:
"email account 1" owns "API project 1", and create buckets/objects Google Cloud Service account to "email account 1"
"email account 1" owns "API project 1", and create buckets/objects Google Cloud Service account to "email account 2"
"email account 2" owns "API project 2", and create buckets/objects Google Cloud Service account to "email account 1"
"email account 2" owns "API project 2", and create buckets/objects Google Cloud Service account to "email account 2"
It is all OK with case one, obviously, since all the things are under the same account.
After that, I have been stuck in case 2, with an HTTP response code 403. (forbidden, access denied) Once, I have interpreted it as a project can only write data in its own account. However, I don't believe that it is reasonable, then, I tried step (3), i.e. register the API project 2, and then use OAuth2.0 authentication with "email account 1", and it works finally.
Then, I tried case (4), it still failed with HTTP 403! i.e. The owner of the project cannot access its own Google Cloud Storage service!
However, with Google OAuth2.0 Playground, I can create a bucket with the account with problem ("email account 2").
Can anyone give me some hints that, what is the problem with my 2nd account? Why API application cannot access its own Google Cloud Service, even though the OAuth2.0 is done?