繁体   English   中英

Facebook Android API 登录后不会返回应用程序

[英]Facebook Android API doesn't return to app after login

我一直在尝试使 Facebook 登录与 Android API 一起工作一段时间......我已经尝试了几个教程并搜索了很多但无法解决我的问题......

我正在尝试在我的应用程序上进行简单的登录...登录有效...当我单击登录按钮时会打开 facebook 应用程序或 webviewer,但是在登录帐户并授予权限后,我的应用程序没有返回屏幕...... Facebook UI 只是关闭,什么也没有发生......

这是我的代码:

package com.trucounter.crimemap.app.activities;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;

import com.facebook.FacebookException;
import com.facebook.Request;
import com.facebook.Response;
import com.facebook.Session;
import com.facebook.SessionState;
import com.facebook.model.GraphUser;
import com.facebook.widget.LoginButton;
import com.trucounter.crimemap.app.R;

    import java.util.Arrays;


    /**
    * Created by Gabriel on 19/04/14.
    */
    public class LoadActivity extends Activity {

    private String TAG = "LoadActivity";


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.load_layout);

        LoginButton loginButton = (LoginButton)findViewById(R.id.loginButton);

        loginButton.setOnErrorListener(
            new LoginButton.OnErrorListener()
            {
                @Override
                public void onError(FacebookException error)
                {
                    Log.i(TAG, "Error: " + error.getMessage());
                }
            }
        );

        //Setting permission list
        loginButton.setReadPermissions(Arrays.asList("basic_info","email"));

        //Session state callback event
        loginButton.setSessionStatusCallback(
            new Session.StatusCallback()
            {
                @Override
                public void call(Session session, SessionState state, Exception exception)
                {
                    if(session.isOpened())
                    {
                        Log.i(TAG, "Access Token: " + session.getAccessToken());
                        Request meRequest = Request.newMeRequest(
                                session,
                                new Request.GraphUserCallback()
                                {
                                    @Override
                                    public void onCompleted(GraphUser user, Response response)
                                    {
                                        if(user != null)
                                        {
                                            Log.i(TAG, "User ID: " + user.getId());
                                            Log.i(TAG, "Email: " + user.asMap().get("email"));
                                        }
                                    }
                                }
                        );
                        meRequest.executeAsync();
                    }
                }
            }
        );
    }

    @Override
    protected void onPause() {
        super.onPause();
        finish();
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data);
    }
}

我在日志上什么也没有...

我发现了类似的问题,但没有一个有效的解决方案

提前致谢

您可以查看Facebook SDK示例。 他们会帮助。 但是下面的代码为我工作。

private Session.StatusCallback statusCallback = new SessionStatusCallback();
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.mylayout);

    Session session = new Session(getApplicationContext());
    Session.setActiveSession(session);
    session.openForRead(new Session.OpenRequest(MyActivity.this).setDefaultAudience(SessionDefaultAudience.ONLY_ME).setPermissions(Arrays.asList("user_birthday", "email")).setCallback(statusCallback));
                Session.setActiveSession(session);


    onSessionStateChange();
}

private class SessionStatusCallback implements Session.StatusCallback {
    @Override
    public void call(Session session, SessionState state, Exception exception) {
        onSessionStateChange();
    }
}



private void onSessionStateChange() {
    Session session = Session.getActiveSession();
    if(session != null){
        if (session.isOpened()){

            Request getMe = Request.newMeRequest(session, new Request.GraphUserCallback() {
                @Override
                public void onCompleted(GraphUser user, Response response) {
                    if(user != null){
                        finish();
                    }
                }
            }
        }
    }
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data);
}

希望这会有所帮助。

我正在使用facebook,twitter和linkedin登录的socialauth库。 一切正常。

从此链接https://github.com/3pillarlabs/socialauth-android下载Socialauth库,然后在您的工作空间中导入customUI示例。 运行此演示。 如果您在掌握此代码方面遇到任何困难,请问我。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM