android - 按下 facebook 登录按钮后没有任何反应

标签 android facebook

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/

相关文章:

android - 如何合并到 kotlin 协程在一起?

android - Facebook 与来自 Android 应用程序的元数据共享链接

javascript - 在 Facebook 上共享仅通过重定向检索的页面

android - 无法在 Android Studio 中导入 com.google.android.gms.maps.model.LatLng

android - 如何将数据库从 Firebase 移动到另一台服务器?

java - 在不同的 "context"中启动应用程序

java - 连续下降的线

android - 无法获取 facebook sdk 哈希 key 。

facebook - 如何使用 FQL 列出我的 friend ?

ios - 如何获取 Facebook 和 Twitter 的 appID?