[英]Android, Facebook login doesn't work when the Facebook application is installed
[英]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.