Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Facebook SDK-登录后不会发生任何事情_Java_Android - Fatal编程技术网

Java Facebook SDK-登录后不会发生任何事情

Java Facebook SDK-登录后不会发生任何事情,java,android,Java,Android,目前创建了一个Facebook登录按钮,我现在正试图在成功登录时重定向到一个新的活动。为此,我当然使用onSucces()函数 但是,当我在应用程序上单击login时,它会加载,但不会发生任何事情。它停留在登录页面 我的登录活动代码: package com.example.frederik.testpleasework; import android.app.Activity; import android.content.Intent; import android.os.Bundle;

目前创建了一个Facebook登录按钮,我现在正试图在成功登录时重定向到一个新的活动。为此,我当然使用onSucces()函数

但是,当我在应用程序上单击login时,它会加载,但不会发生任何事情。它停留在登录页面

我的登录活动代码:

package com.example.frederik.testpleasework;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.TextView;

import com.facebook.AccessToken;
import com.facebook.CallbackManager;
import com.facebook.FacebookCallback;
import com.facebook.FacebookException;
import com.facebook.FacebookSdk;
import com.facebook.Profile;
import com.facebook.login.LoginResult;
import com.facebook.login.widget.LoginButton;

public class LoginActivity extends Activity {

    LoginButton login;
    TextView info;
    CallbackManager callbackManager;

    //Creating and initializing the feature(Code from Facebook install guide)
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        FacebookSdk.sdkInitialize(getApplicationContext()); //Calls for the facebook feature
        callbackManager = CallbackManager.Factory.create(); //Initializing callback, checking login result
        setContentView(R.layout.content_main);
        info = (TextView) findViewById(R.id.info);
        login = (LoginButton) findViewById(R.id.login_button);

        login.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
            @Override
            public void onSuccess(LoginResult loginResult) {
                Intent i = new Intent(LoginActivity.this, LandingActivity.class);
                startActivity(i);
            }

            @Override
            public void onCancel() {

            }

            @Override
            public void onError(FacebookException e) {

            }
        });
    }

}
我假设错误在这些类中的某个地方,但是如果您需要来自其他代码部分的更多信息,请随时请求

编辑,androidmanifest:

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

    <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"
            android:label="@string/app_name"
            android:theme="@style/AppTheme.NoActionBar" >
        </activity>
        <activity
            android:name="com.facebook.FacebookActivity"
            android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation"
            android:label="@string/app_name"
            android:theme="@android:style/Theme.Translucent.NoTitleBar" />
        <activity android:name=".LoginActivity" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

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

        <uses-permission android:name="android.permission.CAMERA" />
 //Requests permission to use the camera
        <uses-feature android:name="android.hardware.camera" />
 //A device NEEDS to have a camera to install the app
        <activity
            android:name=".LandingActivity"
            android:label="@string/title_activity_landing"
            android:theme="@style/AppTheme.NoActionBar" >
        </activity>
    </application>

</manifest>

//请求使用相机的权限
//设备需要有摄像头才能安装应用程序
mButtonLogin.registerCallback(回调管理器,
新建FacebookCallback(){
@凌驾
成功时公共无效(LoginResult LoginResult){
handlePendingAction();
GraphRequest请求=GraphRequest.newmereRequest(
loginResult.getAccessToken(),新GraphRequest.GraphJSONObjectCallback(){
@凌驾
未完成公共无效(JSONObject对象,GraphResponse响应){
Log.v(“LoginActivity”,response.toString());
试一试{
意图i=新意图(LoginActivity.this、LandingActivity.class);
星触觉(i);
}捕获(JSONException e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
}                                   
});
request.executeAsync();
}
@凌驾
公开作废{
}
@凌驾
public void onError(facebook异常){
}
});

尝试在登录活动中添加此代码。

来自Facebook官方文档。 使用方法
doFBLogin
进行登录获取基本配置文件

 // Write only required permissions
    private String[] PERMISSION = new String[]{"user_photos", "email",
            "user_about_me", "public_profile", "user_about_me", "user_friends",
            "user_likes", "user_hometown",
            "user_education_history", "user_work_history", "user_birthday"};  

    private CallbackManager callbackmanager;
    private String strFirstname;
    private String strLastname;
    private String strEmail;
    private String strProfilePhoto;
    private String strGender;

  private void doFBLogin() {
            callbackmanager = CallbackManager.Factory.create();
            // Set permissions
            LoginManager.getInstance().logInWithReadPermissions(this, Arrays.asList(PERMISSION));
            LoginManager.getInstance().registerCallback(callbackmanager, new FacebookCallback<LoginResult>() {
                @Override
                public void onSuccess(LoginResult loginResult) {
                    GraphRequest request = GraphRequest.newMeRequest(
                            loginResult.getAccessToken(),
                            new GraphRequest.GraphJSONObjectCallback() {
                                @Override
                                public void onCompleted(
                                        JSONObject json,
                                        GraphResponse response) {
                                    if (response.getError() != null) {
                                        new ShowToast(SplashScreen.this, getResources().getString(R.string.failed_login));
                                    } else {
                                        try {
                                            strFirstname = json.getString("first_name") + " " + json.getString("last_name");
                                            strLastname = json.getString("last_name");
                                            strEmail = json.getString("email");
                                            strProfilePhoto = json.getJSONObject("picture").getJSONObject("data").getString("url");
                                            strGender = json.getString("gender");

                                        } catch (JSONException e) {
                                        }
                                    }

                                }
                            });
                    Bundle parameters = new Bundle();
                    parameters.putString("fields", "id,name,email,gender,birthday,first_name,last_name,picture.type(large)");
                    request.setParameters(parameters);
                    request.executeAsync();
                }

                @Override
                public void onCancel() {
                }

                @Override
                public void onError(FacebookException error) {
                    new ShowToast(SplashScreen.this, getResources().getString(R.string.failed_login));
                }
            });


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

第一步,初始化facebook sdk:

FacebookSdk.sdkInitialize(this.getApplicationContext());
第二步,创建回拨管理器:

CallbackManager callbackManager = CallbackManager.Factory.create();
第三步,添加读取权限:

LoginManager.getInstance().logInWithReadPermissions(this, Arrays.asList("public_profile", "user_friends"));
下一步,注册回拨:

LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback<LoginResult>() {...});

试试这个代码,希望对你有帮助。你可以参考。

你的
AndroidManifest.xml
看起来怎么样?@MukulGoel添加了它=)一旦你点击“使用facebook登录”,facebook按钮是否会变为“注销”?@DroidAks不会。我成功登录,它返回到登录按钮。所以我想是的working@Stenberg是否已在AndroidManifest文件中添加权限?已尝试添加代码。Getting无法解析sybol“mButtonLogin”,我是否应该按照上面代码中的定义将其更改为“login”?也无法解析方法“handlePendingAction()”。最后,异常“org.json.JSONException”从未被抛出到响应错误的try块中。尽管删除handlePending行,仍然会出现handlePending和JSONE错误。是的,您需要添加internet权限。使用您的方法不会改变任何结果
CallbackManager callbackManager = CallbackManager.Factory.create();
LoginManager.getInstance().logInWithReadPermissions(this, Arrays.asList("public_profile", "user_friends"));
LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback<LoginResult>() {...});
@Override
 protected void onActivityResult(final int requestCode, final int resultCode, final Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    callbackManager.onActivityResult(requestCode, resultCode, data);
}