ユーザーの「いいね」が取得されるように、ユーザーがFacebook経由でログインするように求められるAndroidアプリケーションに単純なアクティビティを実装しようとしています。明らかに最初に、Facebook経由で簡単なログインをテストしています。「Android用Facebook SDKの開始」にある正確なコードを使用しています-ステップ6(https://developers.facebook.com/docs/getting-started/facebook-sdk-for-android/3.0/)しかし、何らかの理由で機能していません。コードをデバッグすると、次の状態に気付きました。
if(session.isOpen())
すでに Facebook にログオンしているにもかかわらず、常に false を返します。私はそれを修正するためにあらゆることを試みましたが、何も機能していないようです。
誰かがこの問題を抱えていた、またはそれを修正する方法を知っていますか?
編集:エミュレータではなく、電話でこのテストを直接試しています。それが問題になるかどうかはわかりません。
前もって感謝します!
そして、私はこのソリューションを試しましたsession.isOpened() は、Facebookに正常にログインした場合でもfalseを返しますが、Java 6または7を使用しても同じハッシュキーが得られました。
EDIT 2:私も同じことを試しましたが、アプローチが少し異なります。http://sonyarouje.com/2011/09/18/facebook-hash-key-for-android-apps/私はまだ同じ問題を抱えています。session.isOpen()メソッドは常に false を返します。
EDIT 3:これが私が試した最新のコードです。logcat にエラーはないと思います。とにかく、何かが足りない場合に備えて、ここにリンクします。
package com.example.danandroidapp;
import java.util.Arrays;
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.facebook.widget.LoginButton.OnErrorListener;
import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.view.Menu;
import android.widget.TextView;
public class MainActivity extends Activity {
private String TAG = "MainActivity";
private TextView lblEmail;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lblEmail = (TextView) findViewById(R.id.lblEmail);
LoginButton authButton = (LoginButton) findViewById(R.id.authButton);
authButton.setOnErrorListener(new OnErrorListener() {
@Override
public void onError(FacebookException error) {
Log.i(TAG, "Error " + error.getMessage());
}
});
authButton.setReadPermissions(Arrays.asList("basic_info", "email"));
authButton.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.executeMeRequestAsync(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"));
lblEmail.setText(user.asMap().get("email").toString());
}
}
});
}
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
そして私のlogcat出力:https://www.dropbox.com/s/7qg9zbhlpikfovf/log.txt