Anonymous
Проблема с получением данных пользователя Facebook после входа в систему через мое приложение для Android
Сообщение
Anonymous » 22 окт 2024, 13:18
Снимок экрана проблемы при отладке:
Folwoing — это мой полный код файла входа в Facebook
Код: Выделить всё
import java.util.ArrayList;
import java.util.Arrays;
import org.json.JSONArray;
import org.json.JSONObject;
import com.facebook.HttpMethod;
import com.facebook.Request;
import com.facebook.RequestAsyncTask;
import com.facebook.Response;
import com.facebook.Session;
import com.facebook.SessionState;
import com.facebook.UiLifecycleHelper;
import com.facebook.model.GraphUser;
import com.facebook.widget.LoginButton;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Toast;
public class MainFragment extends Fragment {
private static final String TAG = "MainFragment";
private UiLifecycleHelper uiHelper;
Context context;
private void onSessionStateChange(Session session, SessionState state,
Exception exception) {
if (state.isOpened()) {
Request.newMeRequest(session, new Request.GraphUserCallback() {
// callback after Graph API response with user object
@Override
public void onCompleted(GraphUser user, Response response) {
if (user != null) {
// Display the parsed user info
// userInfoTextView.setText(buildUserInfoDisplay(user));
// Log.d(TAG,"Failed to login");
}
}
}).executeAsync();
}
else if (state.isClosed()) {
Log.i(TAG, "Logged out...");
}
}
private Session.StatusCallback callback = new Session.StatusCallback() {
@Override
public void call(Session session, SessionState state,
Exception exception) {
onSessionStateChange(session, state, exception);
}
};
private String buildUserInfoDisplay(GraphUser user) {
StringBuilder userInfo = new StringBuilder("");
// Example: typed access (name)
// - no special permissions required
userInfo.append(String.format("Name: %s\n\n", user.getName()));
// Example: typed access (birthday)
// - requires user_birthday permission
userInfo.append(String.format("Birthday: %s\n\n", user.getBirthday()));
// Example: partially typed access, to location field,
// name key (location)
// - requires user_location permission
userInfo.append(String.format("Location: %s\n\n", user.getLocation()
.getProperty("name")));
// Example: access via property name (locale)
// - no special permissions required
userInfo.append(String.format("Locale: %s\n\n",
user.getProperty("locale")));
// Example: access via key for array (languages)
// - requires user_likes permission
JSONArray languages = (JSONArray) user.getProperty("languages");
if (languages.length() > 0) {
ArrayList languageNames = new ArrayList();
for (int i = 0; i < languages.length(); i++) {
JSONObject language = languages.optJSONObject(i);
// Add the language name to a list. Use JSON
// methods to get access to the name field.
languageNames.add(language.optString("name"));
}
userInfo.append(String.format("Languages: %s\n\n",
languageNames.toString()));
}
return userInfo.toString();
}
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.login_layout, container, false);
LoginButton authButton = (LoginButton) view
.findViewById(R.id.authButton);
authButton.setFragment(this);
authButton.setReadPermissions(Arrays.asList("user_about_me",
"user_likes", "user_status", "user_groups"));
return view;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
context = getActivity();
uiHelper = new UiLifecycleHelper(getActivity(), callback);
uiHelper.onCreate(savedInstanceState);
}
public void onResume() {
super.onResume();
uiHelper.onResume();
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
uiHelper.onActivityResult(requestCode, resultCode, data);
}
@Override
public void onPause() {
super.onPause();
uiHelper.onPause();
}
@Override
public void onDestroy() {
super.onDestroy();
uiHelper.onDestroy();
}
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
uiHelper.onSaveInstanceState(outState);
}
}
Любая помощь по этому вопросу будет большой благодарностью...
Подробнее здесь:
https://stackoverflow.com/questions/269 ... ndroid-app
1729592335
Anonymous
Снимок экрана проблемы при отладке: [img]https://i.sstatic.net/tXjp8 .png[/img] Folwoing — это мой полный код файла входа в Facebook [code]import java.util.ArrayList; import java.util.Arrays; import org.json.JSONArray; import org.json.JSONObject; import com.facebook.HttpMethod; import com.facebook.Request; import com.facebook.RequestAsyncTask; import com.facebook.Response; import com.facebook.Session; import com.facebook.SessionState; import com.facebook.UiLifecycleHelper; import com.facebook.model.GraphUser; import com.facebook.widget.LoginButton; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.support.v4.app.Fragment; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Toast; public class MainFragment extends Fragment { private static final String TAG = "MainFragment"; private UiLifecycleHelper uiHelper; Context context; private void onSessionStateChange(Session session, SessionState state, Exception exception) { if (state.isOpened()) { Request.newMeRequest(session, new Request.GraphUserCallback() { // callback after Graph API response with user object @Override public void onCompleted(GraphUser user, Response response) { if (user != null) { // Display the parsed user info // userInfoTextView.setText(buildUserInfoDisplay(user)); // Log.d(TAG,"Failed to login"); } } }).executeAsync(); } else if (state.isClosed()) { Log.i(TAG, "Logged out..."); } } private Session.StatusCallback callback = new Session.StatusCallback() { @Override public void call(Session session, SessionState state, Exception exception) { onSessionStateChange(session, state, exception); } }; private String buildUserInfoDisplay(GraphUser user) { StringBuilder userInfo = new StringBuilder(""); // Example: typed access (name) // - no special permissions required userInfo.append(String.format("Name: %s\n\n", user.getName())); // Example: typed access (birthday) // - requires user_birthday permission userInfo.append(String.format("Birthday: %s\n\n", user.getBirthday())); // Example: partially typed access, to location field, // name key (location) // - requires user_location permission userInfo.append(String.format("Location: %s\n\n", user.getLocation() .getProperty("name"))); // Example: access via property name (locale) // - no special permissions required userInfo.append(String.format("Locale: %s\n\n", user.getProperty("locale"))); // Example: access via key for array (languages) // - requires user_likes permission JSONArray languages = (JSONArray) user.getProperty("languages"); if (languages.length() > 0) { ArrayList languageNames = new ArrayList(); for (int i = 0; i < languages.length(); i++) { JSONObject language = languages.optJSONObject(i); // Add the language name to a list. Use JSON // methods to get access to the name field. languageNames.add(language.optString("name")); } userInfo.append(String.format("Languages: %s\n\n", languageNames.toString())); } return userInfo.toString(); } public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.login_layout, container, false); LoginButton authButton = (LoginButton) view .findViewById(R.id.authButton); authButton.setFragment(this); authButton.setReadPermissions(Arrays.asList("user_about_me", "user_likes", "user_status", "user_groups")); return view; } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); context = getActivity(); uiHelper = new UiLifecycleHelper(getActivity(), callback); uiHelper.onCreate(savedInstanceState); } public void onResume() { super.onResume(); uiHelper.onResume(); } @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); uiHelper.onActivityResult(requestCode, resultCode, data); } @Override public void onPause() { super.onPause(); uiHelper.onPause(); } @Override public void onDestroy() { super.onDestroy(); uiHelper.onDestroy(); } @Override public void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); uiHelper.onSaveInstanceState(outState); } } [/code] Любая помощь по этому вопросу будет большой благодарностью... Подробнее здесь: [url]https://stackoverflow.com/questions/26987553/issue-in-fetching-users-facebook-data-after-user-login-through-my-android-app[/url]