我打电话给https://facebook.com/v2.8/dialog/oauth后试图让Facebook重定向回我的Unity应用程序(在Android上运行)。我在我的Android应用中创建了一个自定义URL方案,例如myApp://。但是,当我尝试将OAuth请求发送到facebook时,它会告诉我不支持redirect_uri。我尝试将自定义网址添加到我的Facebook应用的OAuth设置中,但它说它不是有效的网址(这是有道理的,因为它在技术上并非如此)。
请求:
private void newProjectButton_Click(object sender, EventArgs e)
{
NewProjectForm newProjectForm = new NewProjectForm();
newProjectForm.FormClosed += NewProjectForm_FormClosed;
newProjectForm.Show();
}
private void NewProjectForm_FormClosed(object sender, System.Windows.Forms.FormClosedEventArgs e)
{
////will run when new form is closed
DataTable dt = Util.ToDataTable(ProjectParticipantTable.GetUserProjectsDetails(Util.currentUserId));
userProjectsDGV.DataSource = dt;
}
我的应用AndroidManifest.xml:
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");
以统一方式捕获重定向的代码:
<?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>
使用http://oferei.com/2013/06/serverless-instagram-authentication/上的说明生成的自定义库来命中课程public class OnAcessToken : MonoBehaviour {
void OnAccessToken(string accessToken)
{
Debug.Log("Received access token: " + accessToken);
SceneManager.LoadScene("FileSelect");
}
}
。
我问的是如何让Facebook允许我的自定义网址方案作为有效的redirect_uri?或者我是以错误的方式解决这个问题。
答案 0 :(得分:1)
结束了一些额外的研究,回答了我自己的问题。不需要为Android使用自定义URL架构,根据Google的说法,使用myApp://
之类的做法的做法已被弃用。
相反,我的架构现在是http://myApp.auth
,相应的intent过滤器如下所示:
<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
设置为可接受的OAuth网址,并且它不会抱怨,因为它具有http
架构。这会覆盖主机而不是架构,因此它可以在Chromium浏览器中运行(以前不是因为上述Chrome标准)。
所以,当我拨打http://redfish.auth/facebooklogin
时,它会重定向回我的应用程序!
参考文献:https://developer.android.com/guide/components/intents-filters.html