Intereting Posts
Есть ли все-таки, чтобы поменять или изменить порядок записи фрагмента BackStack? Как создать каталог Android автоматически, если он еще не существует Могу ли я использовать gloss на Android? Sqlite3: не найден OpenSearch () в приложении для новичков Android не определено Откройте новое рабочее пространство в студии Android Платформа Android: возможен ли пользовательский интерфейс для многократного использования? Как создать счетчик даты на Android Отправьте данные с Android-телефона на bluecove Scala Comet и мобильные приложения Прокрутка до / установка позиции настроек пользовательского списка. Listview, открыть новую активность onClick Удалить программные ограничения ориентации Как добавить вид снизу в макет координатора с помощью пейджера представления? Каковы некоторые из параметров параметров api-камеры для api-камеры для эффективного фотографирования при перемещении камеры пользователем?

Android: Facebook получает «токен доступа пользователя», при успешном входе в систему

Я делаю несколько проектов по регистрации через последнюю версию Facebook, например 3.0. Мне очень трудно получить токен доступа пользователей. Я искал в Интернете и все, максимальные результаты были использованы с использованием старого SDK. Вот некоторые фрагменты кода, которые я взял из Facebook Android SDK Tutorial :

public class LoginActivity extends Activity implements OnClickListener { Button login; TextView accessToken; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_login); login = (Button) findViewById(R.id.login); accessToken = (TextView) findViewById(R.id.accessToken); login.setOnClickListener(this); } @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data); } @Override public void onClick(View v) { // start Facebook Login Session.openActiveSession(this, true, new Session.StatusCallback() { // callback when session changes state @Override public void call(Session session, SessionState state, Exception exception) { if (session.isOpened()) { // make request to the /me API Request.executeMeRequestAsync(session, new Request.GraphUserCallback() { // callback after Graph API response with user // object @Override public void onCompleted(GraphUser user, Response response) { if (user != null) { TextView welcome = (TextView) findViewById(R.id.welcome); welcome.setText("Hello " + user.getName() + "!"); } } }); } } }); } } 

Вход был успешным, и я могу видеть имя пользователя в приложении, как это предлагает учебник Facbeook.

Я пробовал старые методы, но все они теперь устарели. Пожалуйста, помогите мне в получении токена доступа пользователя. Помощь будет оценена по достоинству.

Благодарю.

Solutions Collecting From Web of "Android: Facebook получает «токен доступа пользователя», при успешном входе в систему"

В методе onResume () добавьте следующий код (в этом случае я использовал Toast.makeText, чтобы увидеть доступ к токену после входа в систему):

  Session session = Session.getActiveSession(); if (session.isOpened()) { Toast.makeText(getActivity(), session.getAccessToken(), Toast.LENGTH_LONG).show(); } 

Я использовал getActivity, потому что он в Fragment в моем случае, если у вас есть кнопка входа в Activity, используйте «this» вместо «getActivity ()»,

Примечание. Класс сеанса удаляется в новом Facebook sdk

После Facebook SDK version 4.X вы должны использовать следующее:

 AccessToken token = AccessToken.getCurrentAccessToken(); if (token != null) { Toast.makeText(getActivity(), token, Toast.LENGTH_LONG).show(); } 

Ссылка на журнал изменений находится здесь.

Перенос ссылки с Sdk 3.x на 4.x

Чтобы получить accessToken для facebook-sdk 4. * или выше. Добавьте эти строки после facebookSDKИнтициализация ()

 FacebookSdk.setIsDebugEnabled(true); FacebookSdk.addLoggingBehavior(LoggingBehavior.INCLUDE_ACCESS_TOKEN); 

После этого используйте эти строки кодов,

 AccessToken token = AccessToken.getCurrentAccessToken(); Log.d("Access Token is",token); 

Образец:

  GraphRequestAsyncTask graphRequestAsyncTask = new GraphRequest( login_result.getAccessToken(), //AccessToken.getCurrentAccessToken(), "/me/friends", bundle, HttpMethod.GET, new GraphRequest.Callback() { public void onCompleted(GraphResponse response) { try { JSONArray rawName = response.getJSONObject().getJSONArray("data"); Log.d("rawName friendList",String.valueOf(rawName)); AccessToken token = AccessToken.getCurrentAccessToken(); Log.d("access token is: ",String.valueOf(token)); } catch (JSONException e) { e.printStackTrace(); } } } ).executeAsync(); 

Я новичок в Android.
Я использую приведенный выше код для получения только токена.

Для Facebook SDK 4.21.0
Compile 'com.facebook.android:facebook-android-sdk:4.21.0'

 FacebookSdk.setIsDebugEnabled(true); FacebookSdk.addLoggingBehavior(LoggingBehavior.INCLUDE_ACCESS_TOKENS); AccessToken token = AccessToken.getCurrentAccessToken(); Log.d("access only Token is", String.valueOf(token.getToken())); String facebook_id_token = String.valueOf(token.getToken()); 

Обновлен код ниже:

 @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); callbackManager.onActivityResult(requestCode, resultCode, data); /** This block obtains Facebook UserID and Token */ AccessToken token = AccessToken.getCurrentAccessToken(); if (token != null) { Toast.makeText(this, token.toString(), Toast.LENGTH_SHORT).show(); Log.e(TAG, "Token: " + token.getToken()); Log.e(TAG, "UserID: " + token.getUserId()); } /***/ } 

Мне удалось успешно интегрировать sdk Facebook в мой код с помощью следующего кода:

 public class MainActivity extends Activity implements OnClickListener { Facebook fb; Button button; SharedPreferences sp; //TextView welcome; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); String APP_ID = getString(R.string.APP_ID); fb=new Facebook(APP_ID); sp=getPreferences(MODE_PRIVATE); String access_token=sp.getString("access token",null); long expires=sp.getLong("access expires",0); if(access_token!=null){ fb.setAccessToken(access_token); } if(expires!=0){ fb.setAccessExpires(expires); } button=(Button)findViewById(R.id.login); //pic=(ImageView)findViewById(R.id.picture_pic); button.setOnClickListener(this); updateButtonImage(); } private void updateButtonImage() { // TODO Auto-generated method stub if(fb.isSessionValid()){ try{ //post.setVisibility(Button.VISIBLE); button.setBackgroundResource(R.drawable.logout_button); /*pic.setVisibility(ImageView.VISIBLE); JSONObject obj=null; URL img_url = null; String jsonuser=fb.request("me"); obj=Util.parseJson(jsonuser); String id = obj.optString("id"); String name = obj.optString("name"); welcome.setText("Welcome "+name); img_url=new URL("http://graph.facebook.com/"+id+"/picture?type=large"); Bitmap bmp = BitmapFactory.decodeStream(img_url.openConnection().getInputStream()); pic.setImageBitmap(bmp);*/ buttonClicks(); }catch(Exception e){ e.printStackTrace(); } }else{ //post.setVisibility(Button.INVISIBLE); button.setBackgroundResource(R.drawable.login_button); //pic.setVisibility(ImageView.INVISIBLE); } } public void buttonClicks() { Bundle params = new Bundle(); params.putString("image", "your string"); fb.dialog(MainActivity.this, "feed", params, new DialogListener(){ @Override public void onComplete(Bundle values) { // TODO Auto-generated method stub } @Override public void onFacebookError(FacebookError e) { // TODO Auto-generated method stub } @Override public void onError(DialogError e) { // TODO Auto-generated method stub } @Override public void onCancel() { // TODO Auto-generated method stub } }); } @Override public void onClick(View v) { // TODO Auto-generated method stub if(fb.isSessionValid()){ //button close our session - log out facebook try { fb.logout(getApplicationContext()); updateButtonImage(); } catch (MalformedURLException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } }else{ //login to fb fb.authorize(MainActivity.this, new String[] {"email"}, new DialogListener(){ @Override public void onComplete(Bundle values) { // TODO Auto-generated method stub Editor editor=sp.edit(); editor.putString("access_token", fb.getAccessToken()); editor.putLong("access expires", fb.getAccessExpires()); editor.commit(); updateButtonImage(); } @Override public void onFacebookError(FacebookError e) { // TODO Auto-generated method stub Toast.makeText(MainActivity.this, "onFacebookError", Toast.LENGTH_SHORT).show(); } @Override public void onError(DialogError e) { // TODO Auto-generated method stub Toast.makeText(MainActivity.this, "onError", Toast.LENGTH_SHORT).show(); } @Override public void onCancel() { // TODO Auto-generated method stub Toast.makeText(MainActivity.this, "onCancel", Toast.LENGTH_SHORT).show(); } }); } } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { // TODO Auto-generated method stub super.onActivityResult(requestCode, resultCode, data); fb.authorizeCallback(requestCode, resultCode, data); } } 

Надеюсь, вы получите некоторую помощь в этом.