У меня OAuth работает в React Native с помощью response-native-app-auth. Мое приложение без проблем перенаправляется на Coinbase для авторизации OAuth. Однажды возникает проблема, как вернуться в мое приложение с токеном. В веб-настройке вы можете предоставить URI перенаправления, но для мобильных устройств его не существует. Согласно документации Coinbase, способ сделать это - использовать специальную строку перенаправления с именем urn: ietf: wg: oauth: 2.0: oob. У меня есть этот набор в настройках приложения Coinbase, и я также передаю его в конфигурации с помощью response-native-app-auth. Что происходит, когда я авторизуюсь, я получаю пустой экран на моем мобильном телефоне с возможностью отмены. Я отменяю, он просто возвращает меня в приложение, как будто я никогда не инициировал запрос. Я думаю, что мне что-то не хватает, чтобы позволить xcode перехватить перенаправление и передать меня обратно в приложение.
index.js:
import { authorize } from 'react-native-app-auth';
const config = {
issuer: 'https://www.coinbase.com/oauth/authorize',
clientId: '<removed',
redirectUrl: 'urn:ietf:wg:oauth:2.0:oob',
scopes: ['wallet:accounts:read'],
serviceConfiguration: {
authorizationEndpoint: 'https://www.coinbase.com/oauth/authorize',
tokenEndpoint: 'https://api.coinbase.com/oauth/token',
revocationEndpoint: 'https://api.coinbase.com/oauth/revoke'
}
};
class App extends Component {
componentDidMount() {
authorize(config)
.then(response => {
console.log(response);
})
.catch(error => {
console.log(error);
});
}
render() {
return (
<View style={{ flex: 1 }}>
<Text>OAuth</Text>
</View>
);
}
}
export default App;
AppDelegate.h:
#import <UIKit/UIKit.h>
#import "RNAppAuthAuthorizationFlowManager.h"
@interface AppDelegate : UIResponder <UIApplicationDelegate, RNAppAuthAuthorizationFlowManager>
@property (nonatomic, strong) UIWindow *window;
@property (nonatomic, weak) id <RNAppAuthAuthorizationFlowManagerDelegate>authorizationFlowManagerDelegate;
@end