深度链接时强制用户通过Facebook登录

时间:2016-04-27 09:06:55

标签: java android facebook-android-sdk

我的APP正在使用由Facebook SDK提供支持的LoginActivity。

一切正常,除非我想进行深层链接,因为如果我直接将用户发送到我的应用程序的一部分,那么用户会绕过所谓的强制登录

所以我做的是以下内容:

<activity
        android:name=".LoginActivity"
        android:screenOrientation="portrait"
        android:configChanges="orientation|screenSize"
        android:label="@string/app_name"
        android:theme="@style/AppTheme.NoActionBar">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
            <data
                android:host="myapp.com"
                android:pathPrefix="/invitations"
                android:scheme="http" />
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />
        </intent-filter>
    </activity>

使用登录活动的数据方案,接收深层链接链接的用户强制登录,然后登录后我将其直接重定向到右侧活动,如下所示(algorythmic version):

private void onLoginSuccess(){

if (getIntent().getData() != null) {
//meaning the user come from a deep link 
    startActivityReview();
}
else{
//meaning the user just open the app withtout any arg from deep link
    goToNormalActivity();
   }
}

我不得不承认,它完美无缺,但当然无法在启动器活动中获取数据android:host

所以我问你,我怎么能强迫我的用户从深层链接首先登录?可能是这样的吗?

  

关于深层链接的活动:

if (Profile.getCurrentProfile() == null){
     Intent main = new Intent(this, LoginActivity.class);
     main.putExtra("action", "userNeedToComerbBackHereAfterLogin");
     startActivity(main);
}
  

登录活动

private void onLoginSuccess(){
     if (getIntent().getExtras().get("action") != null) {
         Intent main = new Intent(this, DeepLinkedAcitivty.class);
         startActivity(main);
     else{
       // Normal Behavior ...
     }

我觉得必须有更好的方法,是吗?

非常感谢

0 个答案:

没有答案