I haven't used OAuth, so can't answer your questions directly. What I can tell you, though, is that the FeatureLayer constructor strips off the query string from the URL. To include query string parameters that go along with the service requests, you'll need to use customParameters instead. For example:
const layer = new FeatureLayer({
url: "https://server/arcgis/serviceName/FeatureServer/0",
customParameters: {
token: "CODE_FROM_OATH"
}
});
This would work until the token expires, and then the layer would stop working unless you refresh the token. Perhaps a better solution would be to make use of IdentityManager.registerToken instead. This would automatically append the token to any service requests from the matching server path.