The client (webapp/native/spa) must be highly trusted by resouce owner, as it directly handles resouce owner's credentials. Typically this flow is used to build a client for your own service. In other words the client needs to be first party trusted app.

Sequence Diagram