在Facebook Integration中,当我单击登录按钮时,它显示正在加载并返回主屏幕?

阿拉夫

我正在我的项目中进行Facebook集成。但是问题是当我单击Facebook登录按钮时,它显示正在加载并重新运行到主屏幕。有人可以告诉我这是什么问题吗?

这是我的MainActivity:-

public class MainActivity extends AppCompatActivity {

    private FacebookData mFacebookData;
    private Button mLoginButton;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mFacebookData = new FacebookData();
        mLoginButton = (Button) findViewById(R.id.button);

        mLoginButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                callFacebookLogin();
            }
        });
    }

    private void callFacebookLogin() {

        Session session = Session.getActiveSession();
        if (session != null) {
            Log.e("session :", "session already build");


            Request request = Request.newMeRequest(session, new Request.GraphUserCallback() {
                @Override
                public void onCompleted(GraphUser user, Response response) {

                    if (user != null) {

                        String str = user.getName();

                        try {


                            String id = user.getId();
                            String firstname = user.getFirstName();
                            String lastname = user.getLastName();
                            String pic = "http://graph.facebook.com/" + id + "/picture?type=large";
                            Log.e("id....", id);
                            Log.e("firstname....", firstname);

                            mFacebookData.setId(id);
                            mFacebookData.setFirstname(firstname);
                            mFacebookData.setLastname(lastname);
                            mFacebookData.setPicture(pic);


                        } catch (Exception e) {

                            e.printStackTrace();
                        }


                    }


                }
            });
            Request.executeBatchAsync(request);
        } else {

            Session.openActiveSession(MainActivity.this, true, new Session.StatusCallback() {
                @Override
                public void call(Session session, SessionState state, Exception exception) {


                    if (session.isOpened()) {
                        if (state == SessionState.OPENED) {

                            Request request = Request.newMeRequest(session, new Request.GraphUserCallback() {
                                @Override
                                public void onCompleted(GraphUser user, Response response) {


                                    if (user != null) {

                                        String str = user.getName();


                                    }

                                    try {

                                        String id = user.getId();
                                        String firstname = user.getFirstName();
                                        String lastname = user.getLastName();
                                        String pic = "http://graph.facebook.com/"
                                                + id
                                                + "/picture?type=large";


                                        mFacebookData.setId(id);
                                        mFacebookData.setFirstname(firstname);
                                        mFacebookData.setLastname(lastname);
                                        mFacebookData.setPicture(pic);


                                    } catch (Exception e) {

                                        e.printStackTrace();
                                    }


                                }
                            });

                            Request.executeBatchAsync(request);
                        }

                    }


                }
            });


        }

    }
}

这是我的清单:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.aaa.examplepractise">

    <uses-permission android:name="android.permission.INTERNET"></uses-permission>


    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".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.LoginActivity"
            android:screenOrientation="portrait" />

        <meta-data
        android:name="com.facebook.sdk.ApplicationId"
        android:value="@string/APP_ID" />


    </application>

</manifest>

这是我的Logcat:

09-27 10:35:24.405 20441-20615/com.example.aaa.examplepractise E/ActivityThread: Failed to find provider info for com.facebook.katana.provider.AttributionIdProvider
09-27 10:35:24.582 20441-20441/com.example.aaa.examplepractise E/ActivityThread: Failed to find provider info for com.facebook.katana.provider.PlatformProvider
09-27 10:35:24.583 20441-20441/com.example.aaa.examplepractise E/ActivityThread: Failed to find provider info for com.facebook.wakizashi.provider.PlatformProvider
Preetika Kaur

由于以下原因,可能会发生这种情况:

  1. 您没有连接到互联网
  2. 您尚未授予访问Internet的权限(Manifest.xml)
  3. 您尚未为该应用程序使用正确的哈希键
  4. 您没有提供正确的应用ID

尝试最新的方法

在您的片段类中包括以下内容:

private FacebookCallback<LoginResult> mFacebookCallback = new FacebookCallback<LoginResult>() {
        @Override
        public void onSuccess(LoginResult loginResult) {
            Log.d("Login", "onSuccess");
                GraphRequest.newMeRequest(
                        loginResult.getAccessToken(), new GraphRequest.GraphJSONObjectCallback() {
                            @Override
                            public void onCompleted(JSONObject me, GraphResponse response) {
                                if (response.getError() != null) {
                                    // handle error
                                } else {
                                    email = me.optString("email");
                                    String id = me.optString("id");
                                    String social_id=me.optString("id");
                                    String name= me.optString("name");
                                    String gender=  me.optString("gender");
                                    boolean verified_user=  me.optBoolean("is_verified");                                   
                                }
                            }
                        }).executeAsync();
            }


            @Override
            public void onCancel () {
                Log.d("Login", "onCancel");
            }

            @Override
            public void onError (FacebookException e){
                Log.d("Login", "onError " + e);

            }
        };

在oncreateView方法中,包括以下代码:

 btn_facebook = (LoginButton) v.findViewById(R.id.btn_fb);
          btn_facebook.setFragment(this);
          btn_facebook.setReadPermissions(Arrays.asList("public_profile, email,user_friends"));
          btn_facebook.registerCallback(mCallbackManager, mFacebookCallback);

在oncreate方法中,添加以下代码:

 FacebookSdk.sdkInitialize(getContext());
        mCallbackManager = CallbackManager.Factory.create();
        setupTokenTracker();
        setupProfileTracker();

                mTokenTracker.startTracking();
        mProfileTracker.startTracking();

        try {

            PackageInfo info = getActivity().getPackageManager().getPackageInfo("package name here", PackageManager.GET_SIGNATURES);
            for (Signature signature : info.signatures) {
                MessageDigest md = MessageDigest.getInstance("SHA");
                md.update(signature.toByteArray());
                // Log.e("Key", Base64.encodeToString(md.digest(), Base64.DEFAULT));
            }
        } catch (Exception ex) {
            StringWriter errors = new StringWriter();
            ex.printStackTrace(new PrintWriter(errors));
            // Log.e("Error", errors.toString());

        }

TokenTracker和PRofileTracker方法:

 private void setupTokenTracker() {
        mTokenTracker = new AccessTokenTracker() {
            @Override
            protected void onCurrentAccessTokenChanged(AccessToken oldAccessToken, AccessToken currentAccessToken) {
                // Log.d("VIVZ", "" + currentAccessToken);
            }
        };
    }

    private void setupProfileTracker() {
        mProfileTracker = new ProfileTracker() {
            @Override
            protected void onCurrentProfileChanged(Profile oldProfile, Profile currentProfile) {
                // Log.d("VIVZ", "" + currentProfile);

            }
        };
    }

在onaCtivityResult中,您将获取数据,因此应像这样添加:

 @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        // Log.e("info", "onActivityResult:" + requestCode + ":" + resultCode + ":" + data);
        Bundle bundle = data.getExtras();
        for (String key : bundle.keySet()) {
            Object value = bundle.get(key);
        }      
            mCallbackManager.onActivityResult(requestCode, resultCode, data);

    }

在Gradle文件中添加以下依赖项:

编译'com.facebook.android:facebook-android-sdk:4.0.0'

在xml中,包含按钮如下所示:

 <com.facebook.login.widget.LoginButton
                    android:id="@+id/btn_fb"
                    android:layout_width="0dp"
                    android:layout_height="match_parent"
                    android:layout_margin="1dp"
                    android:layout_weight="1"
                    android:gravity="center"
                    android:singleLine="true"
                    android:textColor="@color/white"
                    android:textSize="16sp"
                    fb:login_text="@string/facebook"
                    fb:logout_text="@string/facebook" />

在清单中添加以下权限以及元数据和活动标签:

 <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<activity
            android:name="com.facebook.FacebookActivity"
            android:label="title_facebook_login" />

        <meta-data
            android:name="com.facebook.sdk.ApplicationId"
            android:value="@string/app_id" />

在活动中添加片段并执行代码。希望它能使我知道是否需要提出其他任何要求。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

当我单击快速WebView中的共享按钮时,重定向到Facebook应用程序

当我尝试登录我的应用程序时,Facebook登录按钮才加载

Facebook登录仅显示按钮

当我转到主屏幕时,使用Facebook Login SDK的应用程序崩溃

我正在尝试整数Facebook登录,它显示“视图控制器不符合协议”

通过iOS的设置屏幕登录时,我无法登录Facebook

Swift的Facebook登录按钮

Facebook“仅登录”按钮

当我尝试使用Facebook或Google登录时,GetExternalLoginInfoAsync始终返回null

单击时,Facebook登录按钮未运行回调

Android Facebook SDK不显示登录屏幕

当我使用Firebase Unity插件在android中实现FaceBook Auth函数时,它崩溃了

当我按“登录Facebook”按钮时,我的应用程序总是要求我打开TuneIn Radio吗?

当我尝试在Java中自动登录Facebook时发生内部服务器错误500

单击facebook之类的按钮时,不应显示弹出框

Facebook登录按钮将不会显示

当我将链接发布到我的网站时,Facebook中没有显示图片

如何居中Facebook登录按钮?

Facebook登录按钮错误onclick

调整facebook登录按钮的大小

Facebook登录按钮对齐iOS

Android 上的 Facebook 登录按钮

使用 Facebook-PHP-SDK 登录 Facebook

Facebook SDK 3.0登录-Facebook进程终止

Phonegap + Facebook + PHP后端:Facebook用户登录

xcode 9中的Facebook登录按钮终止

WordPress页面中的仅Facebook登录按钮

当我将网站的URL粘贴到Facebook或Slack等中时,如何显示图像?

我正在尝试使用Facebook登录,但登录成功,但没有返回到应用程序