0
저는 페이스 북을 안드로이드 응용 프로그램에 통합하려고합니다. 페이스 북 승인 코드를 추가했습니다 (지침은 여기 http://developers.facebook.com/docs/mobile/android/build/에 따라 모든 단계를 따랐습니다). facebook 인증이 발생할 때마다 onActivityResult가 호출되지만 데이터는 null이고 resultCode는 0 (영/RESULT_CANCELED)입니다.안드로이드 페이스 북의 승인 onActivityResult()는 항상 데이터가 null로 호출되고 resultCode는 0 (영/RESULT_CANCELED)입니다.
주요 활동 클래스
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
MCAndroidFBIntegration.authorizeCallback(requestCode, resultCode, data);
}
MCAndroidFBIntegration.java
공용 클래스 MCAndroidFBIntegration가 {
private static final String APP_ID = APP_ID_NUMBER;
private static Facebook facebook;
private AsyncFacebookRunner mAsyncFBRunner;
public Preferences mPrefs;
private Context ctx;
private static MCAndroidFBIntegration mcAndroidFBIntegration;
public MCAndroidFBIntegration(Context ctx) {
this.ctx = ctx;
}
@Override
public void integrate() {
// Integrate with Facebook
facebook = new Facebook(APP_ID);
mAsyncFBRunner = new AsyncFacebookRunner(facebook);
loginToFacebook();
}
private void loginToFacebook() {
mPrefs = GamePreference.getPreferences();
String accessToken = mPrefs.getString(Config.ACCESS_TOKEN, null);
long expires = mPrefs.getLong(Config.ACCESS_EXPIRES, 0);
if (accessToken != null) {
facebook.setAccessToken(accessToken);
}
if (expires != 0) {
facebook.setAccessExpires(expires);
}
if (!facebook.isSessionValid()) {
facebook.authorize((Activity) ctx, new String[] { "publish_stream",
"read_stream", "offline_access"}, new DialogListener() {
@Override
public void onCancel() {
// Function to handle cancel event
System.out.println("Facebook:: event cancelled");
}
@Override
public void onComplete(Bundle values) {
// Function to handle complete event
// Edit Preferences and update facebook acess_token
System.out
.println("Facebook:: setting access token and expire time in preferences");
User user = User.getUser();
if (user != null) {
user.setAccessToken(facebook.getAccessToken());
user.setAccessExpires(facebook.getAccessExpires());
user.updatePrefs();
mPrefs.flush();
}
}
@Override
public void onError(DialogError error) {
// Function to handle error
System.out.println("Facebook:: Error - "
+ error.getLocalizedMessage());
}
@Override
public void onFacebookError(FacebookError fberror) {
// Function to handle Facebook errors
System.out.println("Facebook:: fbError - code: "
+ fberror.getErrorCode() + " message: "
+ fberror.getLocalizedMessage());
}
});
}
}
public static void authorizeCallback(int requestCode, int resultCode,
Intent data) {
if (data != null) {
String error = data.getStringExtra("error");
if (error != null) {
String description = data.getStringExtra("error_description");
System.out.println("Facebook:: error desc - " + description);
} else {
String token = data.getStringExtra("access_token");
String expires = data.getStringExtra("expires_in");
System.out.println("Facebook:: call back access token - "
+ token);
System.out.println("Facebook:: call back expires - " + expires);
}
}
facebook.authorizeCallback(requestCode, resultCode, data);
}
}
012 IFacebookIntegration를 구현 : 여기에 내 코드입니다캠 누군가 내가 여기서하고있는 실수가 무엇인지 말해주십시오.
덕분에, 카말
는 항상 로그에이를 얻을. ** 활동이 너무 ** 활동 결과를 취소, 새로운 작업으로 시작된다. 이것은 무엇을 의미 하는가? 나는 이것에 대해 그물을 조사하고 이것이 android : launchMode = "singleInstance"와 관련이 있다는 것을 알았다. 하지만 이것을 변경하면 잘못된 Android 앱 키로 인해 인증 실패와 같은 다른 오류가 발생합니다. 나는 무엇을해야합니까? 나는 너무 혼란스럽고 지쳐있다. – Kamal
안녕 카말,이 문제를 해결할 수 있었 니? 나는 똑같은 문제에 직면하고 있지만 매우 혼란 스럽다. – user669231