package com.example.tabv3;
import org.json.JSONException;
import org.json.JSONObject;
import com.facebook.CallbackManager;
import com.facebook.FacebookCallback;
import com.facebook.FacebookException;
import com.facebook.FacebookSdk;
import com.facebook.GraphRequest;
import com.facebook.GraphResponse;
import com.facebook.login.LoginResult;
import com.facebook.login.widget.LoginButton;
import android.app.Activity;
import android.app.Fragment;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.FragmentActivity;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.WebView.FindListener;
import android.widget.Toast;
public class FacebookFragment extends Fragment {
public static CallbackManager callbackmanager;
LoginButton lb;
public void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
Log.i("FacebookFragment","Called");
super.onCreate(savedInstanceState);
}
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
Log.i("FacebookFragment","onCreateview Called");
View rootView = inflater.inflate(R.layout.facebook_layout, container, false);
FacebookSdk.sdkInitialize(getActivity());
callbackmanager = CallbackManager.Factory.create();
lb=(LoginButton)rootView.findViewById(R.id.login_button);
lb.setReadPermissions("public_profile", "email", "user_friends");
lb.registerCallback(callbackmanager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult result) {
Log.i("TAG", "Facebook login successful.");
Toast.makeText(getActivity(), "Logged in successfully!", Toast.LENGTH_SHORT).show();
String token=result.getAccessToken().getToken();
Log.i("TokenSuccess",token);
GraphRequest request=GraphRequest.newMeRequest(result.getAccessToken(), new GraphRequest.GraphJSONObjectCallback(){
@Override
public void onCompleted(JSONObject object, GraphResponse response) {
// TODO Auto-generated method stub
Log.i("Login ACtivity",response.toString());
try
{
String name=object.getString("name");
String email=object.getString("email");
String gender=object.getString("gender");
String birthday=object.getString("birthday");
Log.i("Name"+name,"Gender"+gender+birthday);
}
catch(JSONException e)
{
e.printStackTrace();
}
}
});
Bundle parameters = new Bundle();
parameters.putString("fields","name,gender,birthday,email");
request.setParameters(parameters);
request.executeAsync();
}//onSuccess End
@Override
public void onCancel() {
Toast.makeText(getActivity(), "Logging in canceled.", Toast.LENGTH_SHORT).show();
Log.i("TAG", "Facebook login canceled.");
}
@Override
public void onError(FacebookException error) {
Toast.makeText(getActivity(), "Error occurred while logging in. Please try again.", Toast.LENGTH_SHORT).show();
Log.i("TAG", "Facebook login error.");
Log.e("FAcebbok", "Error", error);
}
});
return rootView;
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
Log.i("onactivityResult","CALLED");
super.onActivityResult(requestCode, resultCode, data);
callbackmanager.onActivityResult(requestCode, resultCode, data);
}
}
运行此代码后,出现 facebook 登录按钮,然后当我按下它时显示一个微调器一秒钟,但没有任何反应。
这里我用的是Fragment
我不想用FragmentActivity
不足之处请指教
最佳答案
我缺少一个我解决的问题
实际上我是在 Fragment
类中实现 onActivityResult
函数,而不是在我添加 Fragment< 的
这个小问题解决了我的问题,可能对其他人有帮助Activity
类中实现
关于android - 按下 facebook 登录按钮后没有任何反应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32023894/