i new android.. trying implement facebook login facing error
please tell me can issue?
mainactivity.java package com.atpata_new; import com.facebook.callbackmanager; import com.facebook.facebookcallback; import com.facebook.facebooksdk; import com.facebook.login.loginresult; import com.facebook.login.widget.loginbutton; import com.facebook.facebookexception; import android.app.activity; import android.content.intent; import android.os.bundle; import android.view.menu; import android.view.menuitem; import android.widget.textview; public class mainactivity extends activity { private textview info; private loginbutton loginbutton; private callbackmanager callbackmanager; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); facebooksdk.sdkinitialize(getapplicationcontext()); callbackmanager = callbackmanager.factory.create(); 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) { info.settext( "user id: " + loginresult.getaccesstoken().getuserid() + "\n" + "auth token: " + loginresult.getaccesstoken().gettoken() ); } @override public void oncancel() { info.settext("login attempt canceled."); } @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); } }
in logcat got below error
09-26 01:50:00.783: e/androidruntime(28704): fatal exception: asynctask #5 09-26 01:50:00.783: e/androidruntime(28704): process: com.atpata_new, pid: 28704 09-26 01:50:00.783: e/androidruntime(28704): java.lang.nullpointerexception 09-26 01:50:00.783: e/androidruntime(28704): @ java.util.concurrent.concurrenthashmap.containskey(concurrenthashmap.java:911) 09-26 01:50:00.783: e/androidruntime(28704): @ com.facebook.internal.utility.queryappsettings(utility.java:822) 09-26 01:50:00.783: e/androidruntime(28704): @ com.facebook.login.widget.loginbutton$1.run(loginbutton.java:489) 09-26 01:50:00.783: e/androidruntime(28704): @ java.util.concurrent.threadpoolexecutor.runworker(threadpoolexecutor.java:1112) 09-26 01:50:00.783: e/androidruntime(28704): @ java.util.concurrent.threadpoolexecutor$worker.run(threadpoolexecutor.java:587) 09-26 01:50:00.783: e/androidruntime(28704): @ java.lang.thread.run(thread.java:841)
mainfest.xml
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.atpata_new" android:versioncode="1" android:versionname="1.0" > <uses-sdk android:minsdkversion="16" android:targetsdkversion="23"/> <uses-permission android:name="android.permission.internet"/> <application android:allowbackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/apptheme" > <activity android:name="com.atpata_new.mainactivity"> <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> <meta-data android:name="com.facebook.sdk.applicationid" android:value="@string/facebook_app_id"/> </manifest>
create blank activity fragment, if using android studio.
lets examplefragment, assume activity created
public class examplefragment extends fragment { loginbutton loginbutton; textview mtextdetails; private accesstokentracker mtokentracker; private profiletracker mprofiletracker; private callbackmanager mcallbackmanager; private facebookcallback<loginresult> mcallback=new facebookcallback<loginresult>() { @override public void onsuccess(loginresult loginresult) { accesstoken accesstoken = loginresult.getaccesstoken(); profile profile = profile.getcurrentprofile(); log.d("fb login success ", "in onsuccess"); if(profile != null){ log.d("message: ", "welcome "+profile.getname()); } } @override public void oncancel() { log.d("app", "oncancel"); toast.maketext(getactivity(), "login via facebook cancelled user ", toast.length_long).show(); } @override public void onerror(facebookexception e) { log.d("app", "onerror"); toast.maketext(getactivity(), "error occurred!, unable login via facebook, please try again ", toast.length_long).show(); } }; //empty constructor public examplefragment() { } public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); facebooksdk.sdkinitialize(getactivity().getapplicationcontext()); mcallbackmanager=callbackmanager.factory.create(); setuptokentracker(); setupprofiletracker(); mtokentracker.starttracking(); mprofiletracker.starttracking(); } @override public void onresume() { super.onresume(); profile profile = profile.getcurrentprofile(); if(profile != null) { log.d("fb login success ", "in onresume"); } } @override public view oncreateview(layoutinflater inflater, viewgroup container, bundle savedinstancestate) { // inflate layout fragment view view=inflater.inflate(r.layout.fragment_login, container, false); return view; } public void onviewcreated(view view,bundle savedinstancestate){ super.onviewcreated(view,savedinstancestate); loginbutton = (loginbutton) view.findviewbyid(r.id.login_button); loginbutton.setfragment(this); //loginbutton.setbackgroundresource(r.drawable.facebook); loginbutton.setcompounddrawableswithintrinsicbounds(null, null, null, null); loginbutton.setcompounddrawablepadding(0); loginbutton.setpadding(20, 20, 20, 20); loginbutton.settext(""); loginbutton.setwidth(250); loginbutton.setheight(35); //loginbutton.setcompounddrawables(null, null, null, null); loginbutton.registercallback(mcallbackmanager, mcallback); } @override public void onactivityresult(int requestcode, int resultcode, intent data) { super.onactivityresult(requestcode, resultcode, data); mcallbackmanager.onactivityresult(requestcode, resultcode, data); } @override public void onstop() { super.onstop(); mtokentracker.stoptracking(); mprofiletracker.stoptracking(); } private void setuptokentracker() { mtokentracker = new accesstokentracker() { @override protected void oncurrentaccesstokenchanged(accesstoken oldaccesstoken, accesstoken currentaccesstoken) { log.d("app currentaccesstoken", "" + currentaccesstoken); } }; } private void setupprofiletracker() { mprofiletracker = new profiletracker() { @override protected void oncurrentprofilechanged(profile oldprofile, profile currentprofile) { if(currentprofile!=null) log.d("app currentprofile", "" + currentprofile); log.d("fb login success ", "in setupprofiletracker"); } }; } //end of file }
in activity xml layout
<fragment android:id="@+id/fragment" android:name="com.example.examplefragment" tools:layout="@layout/fragment_example" android:layout_width="match_parent" android:layout_height="match_parent" />
in fragment xml layout, fragment_example.xml
<com.facebook.login.widget.loginbutton android:id="@+id/login_button" style="?android:textappearancesmall" android:layout_width="250dp" android:layout_height="50dp" android:text="facebook" android:background="#3b5998" android:textstyle="bold" android:textcolor="@android:color/white" android:radius="10dp" />
Comments
Post a Comment