para hashes applicationid android facebook-android-sdk android-facebook

applicationid - key hashes facebook android



Android: Facebook recibe un "Token de acceso de usuario", al iniciar sesiĆ³n correctamente (6)

He estado haciendo algún proyecto de inicio de sesión a través de Facebook, el último SDK, es decir, 3.0. Me está costando mucho conseguir el token de acceso de usuario. He buscado en Internet y, en todos los casos, los resultados máximos fueron usar el SDK anterior. Aquí hay algunos fragmentos de código que he tomado de 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() + "!"); } } }); } } }); } }

El inicio de sesión fue exitoso y puedo ver el nombre de usuario en la aplicación, como lo sugiere el tutorial de Facbeook.

He intentado viejos métodos, pero ahora todos están en desuso. Por favor guíame para obtener el token de acceso de usuario. Se agradecerá la ayuda.

Gracias.


El código a continuación se actualiza:

@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()); } /***/ }


En el método onResume () agregue el siguiente código (en este caso, usé Toast.makeText para ver el acceso al token después de iniciar sesión):

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

Usé getActivity porque está en un Fragmento en mi caso, si tiene su botón de inicio de sesión en una Actividad use "this" en lugar de "getActivity ()"


Logré integrar con éxito el SDK de Facebook en mi mi con la ayuda del siguiente código:

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); } }

Espero que recibas ayuda con esto.


Para obtener accessToken para facebook-sdk 4. * o superior. Añade estas líneas después de facebookSDKInitialize ()

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

Después de eso usa estas líneas de códigos,

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

Muestra:

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();



Soy nuevo en Android ..
Estoy usando el código anterior para obtener el token solamente.

Para Facebook SDK 4.21.0
compilar ''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());