2017-02-02 1 views
0

Я пытаюсь получить Facebook для перенаправления обратно в мое приложение Unity (работает на android) после звонка на https://facebook.com/v2.8/dialog/oauth. Я создал настраиваемую схему URL в моем приложении для Android, например myApp: //. Однако, когда я пытаюсь отправить запрос OAuth в facebook, он сообщает мне, что redirect_uri не поддерживается. Я попытался добавить свой собственный URL-адрес в настройки OAuth моего приложения Facebook, но он говорит, что это не действительный URL (что имеет смысл, поскольку это технически не так).Facebook OAuth Redirects и пользовательский URL-адрес приложения Scehem

Запрос:

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:

<?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> 

Код для ловли перенаправлять в единстве:

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

Закончен, отвечая на мой вопрос с дополнительными исследованиями. Использование специальной схемы URL для андроида не требуется, и, согласно Google, практика использования чего-то вроде myApp:// устарела.

Вместо этого моя схема теперь http://myApp.auth, и соответствующий фильтр намерений выглядит следующим образом:

<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> 

Теперь в настройках Facebook, я могу установить http://redfish.auth как приемлемый URL OAuth, и он не будет жаловаться поскольку он имеет схему http. Это переопределяет хост, а не схему, поэтому он работает в браузерах Chromium (ранее не из-за вышеупомянутых стандартов Chrome).

Итак, когда я звоню http://redfish.auth/facebooklogin, он перенаправляет обратно в мое приложение!

Ссылки: https://developer.android.com/guide/components/intents-filters.html

+0

мне понравилось ваше решение, но это не работает для меня, может быть, потому что я тестирую на телефон с чистой умолчанию приложение браузера Samsung, а не Chrome? Браузер интерпретирует http: //myapp.auth как веб-адрес и возвращает «DNS-адрес myapp.auth не может быть найден». Это, несмотря на то, что он поместил http как схему в фильтр намерения в файл манифеста. Таким образом, либо этот метод работает только с определенными браузерами, либо я делаю что-то неправильно – anything

Смежные вопросы