0
我正在嘗試在正在開發的應用程序上實施Facebook登錄。我遵循Facebook開發人員指南,它的工作!但是,它只適用於我的智能手機上安裝了Facebook應用程序。如果我卸載它,或者我嘗試在沒有安裝Facebook應用程序的智能手機上運行我的應用程序,它只會崩潰。如果未安裝應用程序,Facebook登錄不起作用
所以會發生的是,我點擊登錄按鈕,它讓我把我的Facebook的憑據。它記錄的,但是當我試圖訪問配置文件是這樣的:
Profile.getCurrentProfile().getId()
這給了我一個NullPointerException:
04-01 15:22:10.690 16758-16794/com.example.diogo.soulfiware E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #2
java.lang.RuntimeException: An error occured while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:299)
at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:352)
at java.util.concurrent.FutureTask.setException(FutureTask.java:219)
at java.util.concurrent.FutureTask.run(FutureTask.java:239)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
at java.lang.Thread.run(Thread.java:841)
Caused by: java.lang.NullPointerException
at com.example.diogo.soulfiware.Fragments.FragmentSlideLogin$3$1.doInBackground(FragmentSlideLogin.java:173)
at com.example.diogo.soulfiware.Fragments.FragmentSlideLogin$3$1.doInBackground(FragmentSlideLogin.java:158)
at android.os.AsyncTask$2.call(AsyncTask.java:287)
at java.util.concurrent.FutureTask.run(FutureTask.java:234)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
at java.lang.Thread.run(Thread.java:841)
有趣的是,當它崩潰,如果我打開應用程序第二時間,它要求我以先前插入的用戶憑證註銷,並且顯示「以用戶身份登錄」並要求我註銷!
我的問題是:我真的需要安裝Facebook應用程序才能使登錄工作?
你登錄之前,您可以檢查FB應用程序如已安裝的或沒有,如果沒有,那麼從做登錄網絡而不是應用程序。 –
是的,我想過,但我該怎麼做?登錄按鈕由Facebook API自動生成,並且每次創建片段時都會執行回調。如果我做了onClickListener,它不會更改任何內容,因爲登錄仍在進行。 –