在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条评论
登录后参与评论

相关文章

来自分类Dev

单击时,facebook登录按钮崩溃

来自分类Dev

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

来自分类Dev

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

来自分类Dev

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

来自分类Dev

Facebook登录按钮未显示在ActionbarActivity中

来自分类Dev

Facebook登录仅显示按钮

来自分类Dev

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

来自分类Dev

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

来自分类Dev

登录Facebook

来自分类Dev

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

来自分类Dev

Facebook登录按钮样式

来自分类Dev

Swift的Facebook登录按钮

来自分类Dev

Facebook的登录按钮

来自分类Dev

Facebook“仅登录”按钮

来自分类Dev

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

来自分类Dev

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

来自分类Dev

Android Facebook SDK不显示登录屏幕

来自分类Dev

Android Facebook SDK不显示登录屏幕

来自分类Dev

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

来自分类Dev

屏幕旋转时,Facebook登录窗口关闭

来自分类Dev

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

来自分类Dev

在Android Studio中异常加载Facebook登录按钮

来自分类Dev

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

来自分类Dev

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

来自分类Dev

验证时隐藏Facebook登录按钮

来自分类Dev

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

来自分类Dev

Facebook登录按钮错误onclick

来自分类Dev

Facebook登录按钮对齐iOS

来自分类Dev

Android 上的 Facebook 登录按钮

Related 相关文章

  1. 1

    单击时,facebook登录按钮崩溃

  2. 2

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

  3. 3

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

  4. 4

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

  5. 5

    Facebook登录按钮未显示在ActionbarActivity中

  6. 6

    Facebook登录仅显示按钮

  7. 7

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

  8. 8

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

  9. 9

    登录Facebook

  10. 10

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

  11. 11

    Facebook登录按钮样式

  12. 12

    Swift的Facebook登录按钮

  13. 13

    Facebook的登录按钮

  14. 14

    Facebook“仅登录”按钮

  15. 15

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

  16. 16

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

  17. 17

    Android Facebook SDK不显示登录屏幕

  18. 18

    Android Facebook SDK不显示登录屏幕

  19. 19

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

  20. 20

    屏幕旋转时,Facebook登录窗口关闭

  21. 21

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

  22. 22

    在Android Studio中异常加载Facebook登录按钮

  23. 23

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

  24. 24

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

  25. 25

    验证时隐藏Facebook登录按钮

  26. 26

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

  27. 27

    Facebook登录按钮错误onclick

  28. 28

    Facebook登录按钮对齐iOS

  29. 29

    Android 上的 Facebook 登录按钮

热门标签

归档