1

Eigentlich möchte ich auf meiner Seite als eine Seite nicht als Benutzer mit facebook sdk in Android-App, aber das Problem ist Seite "AccessToken", die ich aus Graph Anfrage abrufen ist in String und kann jetzt nicht in einer anderen Grafikanforderung verwendet werden. Es besagt, dass String nicht in AccessToken konvertiert werden kann.Wie facebook access token als string in graph api verwenden

Hier ist mein Code.

package com.mak.masimmak.pageshare; 

     import android.support.v7.app.AppCompatActivity; 
     import android.os.Bundle; 
     import android.view.View; 
     import android.widget.Button; 
     import android.widget.Toast; 

     import com.facebook.AccessToken; 
     import com.facebook.GraphRequest; 
     import com.facebook.GraphResponse; 
     import com.facebook.HttpMethod; 

     import org.json.JSONException; 
     import org.json.JSONObject; 


     public class sharePage extends AppCompatActivity { 
     Button shareButton; 
      public String PageId; 
      String PageAccessToken; 
      @Override 
      protected void onCreate(Bundle savedInstanceState) { 
       super.onCreate(savedInstanceState); 
       setContentView(R.layout.activity_share_page); 

       shareButton = (Button) findViewById(R.id.shareButton); 



       shareButton.setOnClickListener(new View.OnClickListener(){ 

        @Override 
        public void onClick(View view) { 

         if(getIntent().getExtras() != null) { 
          Bundle extras = getIntent().getExtras(); 
          PageId = extras.getString("PageId"); 

          /* make the API call */ 
          new GraphRequest(
            AccessToken.getCurrentAccessToken(), 
            "/"+PageId+"?fields=access_token", 
            null, 
            HttpMethod.GET, 
            new GraphRequest.Callback() { 
             public void onCompleted(GraphResponse response) { 
              /* handle the result */ 


              try { 
              JSONObject data = response.getJSONObject(); 
              PageAccessToken = data.getString("access_token"); 

               PostOnPage(); 



              } catch (JSONException e) { 
               Toast.makeText(sharePage.this, e.toString(), Toast.LENGTH_LONG).show(); 
              } 


             } 
            } 
          ).executeAsync(); 




         } 
        } 

       }); 
      } 

      public void PostOnPage(){ 

       Bundle params = new Bundle(); 
       params.putString("message", "This is a test message"); 
     /* make the API call */ 
       new GraphRequest(
    /* Problem is here the PageAccessToken is in String How to use this string token here? */ 
         (AccessToken) PageAccessToken, 
         "/"+PageId+"/feed", 
         params, 
         HttpMethod.POST, 
         new GraphRequest.Callback() { 
          public void onCompleted(GraphResponse response) { 
        /* handle the result */ 
          } 
         } 
       ).executeAsync(); 

      } 
     } 

suche ich das Problem in Google und ich habe etwas gefunden ..

public AccessToken(String accessToken, String applicationId, String userId, Collection permissions, Collection declinedPermissions, AccessTokenSource accessTokenSource, Date expirationTime, Date lastRefreshTime) 

Aber ich weiß nicht, wie verwenden oder in meinem Code zu implementieren.

Antwort

3

Ich fand die Lösung meiner eigenen Frage. Sie können AccessToken mithilfe dieser Codezeile vom String-Format in das Format von Facebook AccessToken konvertieren.

AccessToken PageAT = new AccessToken(PageAccessToken, AccessToken.getCurrentAccessToken().getApplicationId(), AccessToken.getCurrentAccessToken().getUserId(), AccessToken.getCurrentAccessToken().getPermissions(), null, AccessTokenSource.FACEBOOK_APPLICATION_NATIVE, AccessToken.getCurrentAccessToken().getExpires(), null); 

Dann ist dieses Pageat wird in Ihrem neuen Graph anfordern gut funktionieren ..

Verwandte Themen