2015-09-16 109 views
1

我正在用Facebook登錄進行應用。我讓登錄工作單獨工作,但現在將其與其他活動集成後,將無法登錄。它帶有錯誤信息「抱歉,出錯了,我們正在處理它,我們會盡快修復它」,然後我按回來,並且它正確地表示登錄已被取消,所以我知道它會讓它變得如此遙遠。任何人都可以看到最新的錯誤?我正在從家用電腦和筆記本電腦上開展同樣的項目。這是否以某種方式搞亂了我的strings.xml中的facebook-id?Facebook登錄失敗,「出錯了」

MainActivity.java

package com.example.nan.spymap; 

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.widget.TextView; 

import com.facebook.CallbackManager; 
import com.facebook.FacebookCallback; 
import com.facebook.FacebookException; 
import com.facebook.FacebookSdk; 
import com.facebook.login.LoginResult; 
import com.facebook.login.widget.LoginButton; 

public class MainActivity extends Activity { 

    private CallbackManager callbackManager; 

    private TextView info; 
    private LoginButton loginButton; 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     FacebookSdk.sdkInitialize(getApplicationContext()); 
     callbackManager = CallbackManager.Factory.create(); 

     setContentView(R.layout.activity_main); 



     setContentView(R.layout.activity_main); 
     info = (TextView)findViewById(R.id.info); 
     loginButton = (LoginButton)findViewById(R.id.login_button); 

     loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() { 
      @Override 
      public void onSuccess(LoginResult loginResult) { 
       startActivity(new Intent(MapActivity.this, MapActivity.class)); 

      } 

      @Override 
      public void onCancel() { 
       info.setText("Login attempt cancelled."); 
      } 

      @Override 
      public void onError(FacebookException e) { 
       info.setText("Login attempt failed."); 
      } 
     }); 

    } 

    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     callbackManager.onActivityResult(requestCode, resultCode, data); 
    } 
} 

我AndroidManifest

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.example.nan.spymap" > 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" /> 
<uses-permission android:name="android.permission.INTERNET"/> 
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 
<application 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" > 
    <meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id"/> 
    <meta-data 
     android:name="com.google.android.gms.version" 
     android:value="@integer/google_play_services_version" /> 
    <meta-data 
     android:name="com.google.android.maps.v2.API_KEY" 
     android:value="@string/google_maps_key" /> 
    <activity 
     android:name=".MainActivity" 
     android:label="@string/app_name" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity android:name="com.facebook.FacebookActivity" 
     android:configChanges= 
      "keyboard|keyboardHidden|screenLayout|screenSize|orientation" 
     android:theme="@android:style/Theme.Translucent.NoTitleBar" 
     android:label="@string/app_name" /> 
</application> 

</manifest> 

我activity_main.xml中

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" android:layout_height="match_parent" 
    android:padding="16dp" 
    > 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/info" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentTop="true" 
     android:textSize="18sp" 
     /> 

    <com.facebook.login.widget.LoginButton 
     android:id="@+id/login_button" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerInParent="true" 
     /> 

</RelativeLayout> 

我的構建

apply plugin: 'com.android.application' 

android { 
    compileSdkVersion 22 
    buildToolsVersion "22.0.1" 

    defaultConfig { 
     applicationId "com.example.nan.spymap" 
     minSdkVersion 21 
     targetSdkVersion 22 
     versionCode 1 
     versionName "1.0" 
    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
} 
repositories { mavenCentral() } 

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile 'com.facebook.android:facebook-android-sdk:4.6.0' 
    compile 'com.google.android.gms:play-services:7.8.0' 
    compile 'com.android.support:appcompat-v7:22.0.1' 
} 
+0

http://stackoverflow.com/questions/29333335/any-example-showing-how-to-login-using-facebook-sdk-4-0-in-android -ei-by-usi –

+0

我不確定該找什麼,Naveen:/ – NicklasN

+0

我注意到這個問題只在我使用了一個新的fb配置文件進行測試時纔會發生......但是當我使用我的自己的FB配置文件...然後它工作正常。 – penduDev

回答

0

目前處於同一確切問題的戰鬥中。

該故障似乎存在於已有的權限中。如果用戶已經授予Facebook應用程序的許可權,則在登錄開始時Facebook的結尾處會出現「出錯」。撤銷權限將使其工作一次,然後再次中斷。

還不確定如何永久解決這個問題呢。 如果我設法找到任何東西,將更新此答案。

EDIT 1:

實測值難看,臨時的替代方法。仍在挖掘。它打破單點登錄。

loginButton = (LoginButton) findViewById(R.id.login_button); 
loginButton.setLoginBehavior(LoginBehavior.WEB_ONLY); 
+0

這並沒有真正回答這個問題。如果您有不同的問題,可以通過單擊[提問](http://stackoverflow.com/questions/ask)來提問。您還可以[添加賞金](http://stackoverflow.com/help/privileges/set-bounties)在您擁有足夠的[聲譽](http://stackoverflow.com/help/)時吸引更多人關注此問題什麼聲譽)。 –

+0

@KrzysztofWolny這可能不是最好的答案,但它確實爲Facebook提供了一個暫時的解決方法,以解決問題。我找不到任何其他方式使它在未簽名的apks上工作。不過謝謝你的指點,注意! – ABendrup

+0

查看我的問題,我自己找到答案。希望它可以幫助你 – NicklasN

0

問題是所有正在嘗試將facebook sdk集成到android應用程序中的人都會出現。 Facebook正在做一些更新。但對簽名的apks工作正常。

0

這是我的keyhash,FB不允許它作爲開發人員從2個不同的機器運行。更改fb控制檯上的keyhash,它會起作用