React native OAuth2 redirect_uri:无效的方案

时间:2016-08-17 07:54:24

标签: android oauth-2.0 react-native google-oauth2

最近我一直在学习本地反应,我遇到了一个农场无法解决的问题。 我尝试使用我的应用程序中的gmail OAuth2进行身份验证,作为重定向参数,我将myscheme:// oauth整个网址看起来像这样:

https://accounts.google.com/o/oauth2/v2/auth?response_type=token&client_id=XXXXXXXX&redirect_uri=myscheme://oauth&scope=https://www.googleapis.com/auth/spreadsheets

我在manifest.xml中注册了一个intent-filter,如下所示:

var prev = document.getElementsByClassName("swiper-slide swiper-slide-prev");
var next = document.getElementsByClassName("swiper-slide swiper-slide-next");

if(prev.length > 0 ){
   alert(prev[0].className);
}

我正在使用react native链接打开URL,我得到的错误(在浏览器中)是400 redirect_uri的参数值无效:无效的方案:myscheme:// oauth

任何人都可以帮助我,我在这里失踪了吗?

2 个答案:

答案 0 :(得分:0)

the docs,我发现您的网址存在两个问题:

  
      
  1. 自定义方案必须包含有效期
  2.   

myscheme更改为com.myapp

  
      
  1. 请注意单个" /"在自定义URI方案之后,这与常规HTTP URL不同
  2.   

myscheme://oauth...更改为myscheme:/oauth...

经过这些更正后,您的网址应该是com.myapp.myscheme:/oauth...而不是myscheme://oauth...

答案 1 :(得分:0)

我正在使用 AppAuth 库来获取OAuth2令牌。根据Google的official document,这种格式对我有用。

<your.app.application.id>:/oauth2callback

例如,如果您的应用程序ID为com.example.app,则在您的AndroidManifest.xml

<activity android:name="net.openid.appauth.RedirectUriReceiverActivity">
        <intent-filter>
            <action android:name="android.intent.action.VIEW"/>
            <category android:name="android.intent.category.DEFAULT"/>
            <category android:name="android.intent.category.BROWSABLE"/>
            <data android:scheme="com.example.app" />
        </intent-filter>
</activity>

要提供给AppAuth的redirectUrl看起来像这样

private val redirectUrl = "com.example.app:/oauth2callback"

希望这对某人有帮助。