2017-02-02 9 views
0

私はhttps://facebook.com/v2.8/dialog/oauthへの呼び出しの後、Facebookを自分のUnityアプリケーション(アンドロイドで実行中)にリダイレクトさせようとしています。私はmyAppのような私のアンドロイドアプリでカスタムURLスキームを作成しました://。しかし、OAuthリクエストをFacebookに送信しようとすると、redirect_uriがサポートされていないことがわかります。 FacebookのアプリのOAuth設定にカスタムURLを追加しようとしましたが、有効なURLではないと言われています(技術的には意味がないので意味があります)。団結でリダイレクトをキャッチするためFacebook OAuthリダイレクトとカスタムアプリケーションのURL Sachem

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android"> 
    <application android:icon="@drawable/app_icon" android:label="@string/app_name"> 
    <activity android:name=".MainActivity" android:label="@string/app_name" android:launchMode="singleTask" android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen" android:screenOrientation="sensor"> 
     <intent-filter> 
     <action android:name="android.intent.action.MAIN" /> 
     <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
     <intent-filter> 
     <data android:scheme="redfish" /> 
     <action android:name="android.intent.action.VIEW" /> 
     <category android:name="android.intent.category.DEFAULT" /> 
     <category android:name="android.intent.category.BROWSABLE" /> 
     </intent-filter> 
    </activity> 
    </application> 
</manifest> 

コード:

要求:

var url = string.Format("https://facebook.com/v2.8/dialog/oauth?client_id={0}&response_type=token&redirect_uri={1}", "MYAPPID", "redfish%3A%2F%2Ffacebooklogin");

マイアプリのAndroidManifest.xmlに

public class OnAcessToken : MonoBehaviour { 

    void OnAccessToken(string accessToken) 
    { 
     Debug.Log("Received access token: " + accessToken); 
     SceneManager.LoadScene("FileSelect"); 
    } 
} 

クラスOnAccessTokenを使用してヒットしました指示によって生成されたカスタムライブラリイオンはhttp://oferei.com/2013/06/serverless-instagram-authentication/である。

私がFacebookにカスタムURLスキームを有効なredirect_uriとして許可する方法を聞いていますか?あるいは、私はこれについて間違った方法をとっています。

答えて

1

私はいくつかの追加調査で自分の質問に答えることになった。 AndroidのカスタムURLスキーマを使用する必要はありません.Googleによれば、myApp://のようなものを使用することは推奨されていません。

代わりに、私のスキーマは今http://myApp.authであり、対応するインテントフィルタは次のようになります。私は許容のOAuth URLとしてhttp://redfish.authを設定することができ、それは文句を言わないだろう、Facebookの設定で、

<intent-filter> 
     <data android:scheme="http" 
       android:host="redfish.auth/> 
     <action android:name="android.intent.action.VIEW" /> 
     <category android:name="android.intent.category.DEFAULT" /> 
     <category android:name="android.intent.category.BROWSABLE" /> 
</intent-filter> 

今それはhttpスキーマを持っているからです。これはスキーマではなくホストをオーバーライドします。そのため、Chromiumブラウザで動作します(以前は前述のChrome標準のためではありませんでした)。

http://redfish.auth/facebookloginを呼び出すと、アプリにリダイレクトされます。

参考文献:https://developer.android.com/guide/components/intents-filters.html

+0

私はあなたのソリューションを言っていたが、それは私がサムスンのデフォルトネットブラウザアプリではなく、Chromeで電話でテストしてるかもしれないので、私のために動作しませんか?ブラウザはhttp://myapp.authをWebアドレスとして解釈し、 'myapp.authのDNSアドレスが見つかりませんでした'を返します。これは、マニフェストファイル内のインテントフィルタにスキームとしてhttpを指定しているにもかかわらずです。だからこのメソッドは、特定のブラウザでのみ動作するか、何か間違っている – anything

関連する問題