2012-04-19 47 views
1

我有類似的問題,因爲Android Facebook.authorize don't call oncomplete methodAndroid的Facebook的授權不工作(泄露窗口)

的onComplete方法isn`t Facebook的授權後調用(既當安裝或沒有Facebook的應用程序)。

Activity類

package com.greatapp; 

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import com.facebook.android.*; 
import com.facebook.android.Facebook.*; 

public class MyGreatAppActivity extends Activity { 

Facebook facebook = new Facebook("YOUR_APP_ID"); 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    facebook.authorize(this, new Facebook.DialogListener() { 
     @Override 
     public void onComplete(Bundle values) { 
     } 

     @Override 
     public void onFacebookError(FacebookError error) { 
     } 

     @Override 
     public void onError(DialogError e) { 
     } 

     @Override 
     public void onCancel() { 
     } 
    }); 
} 

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 

    facebook.authorizeCallback(requestCode, resultCode, data); 
} 
} 

正如你從代碼中看到,i`ve實現onActivityResult因爲它是在官方指導價http://developers.facebook.com/docs/mobile/android/sso/

AndroidManifest.xml中

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="com.greatapp" 
android:versionCode="1" 
android:versionName="1.0" > 

<uses-sdk android:minSdkVersion="7" /> 
<uses-permission android:name="android.permission.INTERNET"/> 

<application 
    android:icon="@drawable/ic_launcher" 
    android:label="@string/app_name" > 
    <activity 
     android:name=".MyGreatAppActivity" 
     android:label="@string/app_name" > 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
</application> 

</manifest> 

顯示並沒有清單文件中的android:noHistory標誌。

唯一的錯誤我在日誌

Activity com.greatapp.MyGreatActivity has leaked window com.[email protected] that was originally added here 
android.view.WindowLeaked: Activity com.greatapp.MyGreatActivity has leaked window [email protected] that was originally added here 
at android.view.ViewRoot.<init>(ViewRoot.java:227) 
at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:148) 
at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:91) 
at android.view.Window$LocalWindowManager.addView(Window.java:424) 
at android.app.Dialog.show(Dialog.java:239) 
at com.facebook.android.Facebook.dialog(Facebook.java:814) 
at com.facebook.android.Facebook.startDialogAuth(Facebook.java:343) 
at com.facebook.android.Facebook.authorize(Facebook.java:206) 
at com.facebook.android.Facebook.authorize(Facebook.java:114) 
at com.greatapp.MyGreatActivity.onCreate(MyGreatActivity.java:18) 
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2459) 
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512) 
at android.app.ActivityThread.access$2200(ActivityThread.java:119) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863) 
at android.os.Handler.dispatchMessage(Handler.java:99) 
at android.os.Looper.loop(Looper.java:123) 
at android.app.ActivityThread.main(ActivityThread.java:4363) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:521) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618) 
at dalvik.system.NativeStart.main(Native Method) 

發現我已經試過了Android 2.1,2.2和4.0.3和有同樣的問題。

從Facebook sdk中複製類的示例也不起作用。

請提供任何可能的幫助。提前致謝!

+0

奇怪,這(通常)意味着活動被關閉,你可以閱讀這些主題:[活動已泄漏窗口(HTTP://計算器。問題/ 7252086/activity-has-leaked-window)和[活動泄漏了最初添加的窗口](http://stackoverflow.com/questions/2850573/activity-has-leaked-window-that-was-最初添加) – 2012-04-19 19:07:37

回答

1

Facebook的Android SSO存在一個問題,它甚至在Platform Status中也這樣說。

您可以在這個錯誤報告獲得更多信息:https://developers.facebook.com/bugs/385350798163367

+0

其實我沒有得到這個錯誤,在日誌中沒有這樣的記錄。 Android只停留在Facebook頁面上,而不是返回到應用程序。 – user898722 2012-04-19 16:26:14

+0

你的代碼對我來說看起來很好。你怎麼確定* onComplete *沒有被調用?這種方法沒有什麼用,或者你在調試?該錯誤報告針對特定的一個,但Facebook在平臺狀態中寫道「我們正在爲Android SSO錯誤修復」(注意複數形式),所以我認爲可以安全地假設它可能與某種方式有關。你用模擬器運行這個嗎?如果是這樣,你可以運行網絡嗅探器,看看後臺發生了什麼。 – 2012-04-19 16:42:04

+0

是的,我在外部設備上調試。我已經想通了,那個與facebook android sdk一起的例子也有同樣的問題。我在日誌中發現錯誤並更新了問題。 – user898722 2012-04-19 18:54:18