簡體   English   中英

如果未安裝應用程序,Facebook登錄將不起作用

[英]Facebook login doesn't work if app is not installed

我正在嘗試在我正在開發的應用程序上實現Facebook登錄。 我遵循了Facebook開發人員指南,並且可以正常工作! 但是,僅當我的智能手機上安裝了Facebook App時,它才有效。 如果我卸載它或嘗試在未安裝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應用程序才能使登錄正常工作嗎?

不一定需要Facebook應用,因為您也可以通過Web小部件登錄進行操作。 但是,當您是開發人員時,在生成簽名的apk時需要注意密鑰哈希對。 要保持兩種方式(applogin和Web小部件登錄)可用,請使用此方法。

try {
    //try to open facebook app if installed. Pass the username as u_name if required
    context.getPackageManager().getPackageInfo("com.facebook.katana", 0);
    return new Intent(Intent.ACTION_VIEW, Uri.parse("fb://page/" + u_name));
} catch (Exception e) {
    //open the web login if app not installed. Pass the user id as u_id if required. 
    return new Intent(Intent.ACTION_VIEW, Uri.parse("https://www.facebook.com/" + u_id));
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM