Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/207.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用facebook sdk 4.1 for android获取facebook好友_Android_Facebook Graph Api_Facebook Sdk 4.0 - Fatal编程技术网

使用facebook sdk 4.1 for android获取facebook好友

使用facebook sdk 4.1 for android获取facebook好友,android,facebook-graph-api,facebook-sdk-4.0,Android,Facebook Graph Api,Facebook Sdk 4.0,我正在开发一个android应用程序,我想在其中获取所有使用同一应用程序的朋友,使用facebook sdk 4.1,我试图查找最新教程,但没有找到任何人。。。我尝试使用GraphRequestBatch,但从未调用onCompleted,请帮助 package com.miivideos; import java.util.Arrays; import java.util.List; import org.json.JSONArray; import android.app.Progres

我正在开发一个android应用程序,我想在其中获取所有使用同一应用程序的朋友,使用facebook sdk 4.1,我试图查找最新教程,但没有找到任何人。。。我尝试使用GraphRequestBatch,但从未调用onCompleted,请帮助

package com.miivideos;
import java.util.Arrays;
import java.util.List;

import org.json.JSONArray;

import android.app.ProgressDialog;
import android.content.Intent;
import android.graphics.drawable.ColorDrawable;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.widget.Toast;

import com.actionbarsherlock.app.SherlockFragmentActivity;
import com.example.miivideos.R;
import com.facebook.AccessToken;
import com.facebook.CallbackManager;
import com.facebook.GraphRequest;
import com.facebook.GraphRequestBatch;
import com.facebook.GraphResponse;

public class FriendList extends SherlockFragmentActivity {
    private static final String TAG = "FriendList";
    public static final List<String> PERMISSIONS = Arrays.asList("publish_actions", "email", "user_location","user_friends");
    private CallbackManager callbackManager;
    AccessToken accesstoken=AccessToken.getCurrentAccessToken();
    @Override
    protected void onCreate(Bundle arg0) {
        super.onCreate(arg0);
        setContentView(R.layout.friend_list);
        android.app.ActionBar ab = getActionBar();
        ColorDrawable colorDrawable = new ColorDrawable(getResources()
                .getColor(R.color.green));
        ab.setBackgroundDrawable(colorDrawable);
        callbackManager = CallbackManager.Factory.create();
        new GetFriendList().execute();

    }

    class GetFriendList extends AsyncTask<String, String, String> {
        ProgressDialog pdig = new ProgressDialog(FriendList.this);
        @Override
        protected String doInBackground(String... params) {
            Log.i(TAG, "Working in background...");
            //LoginManager.getInstance().logInWithReadPermissions(FriendList.this, Arrays.asList("user_friends"));
            //Log.i(TAG,"Having token for: "+String.valueOf(AccessToken.getCurrentAccessToken().getPermissions()));

            GraphRequestBatch batch = new GraphRequestBatch(
                    GraphRequest.newMyFriendsRequest(accesstoken,
                            new GraphRequest.GraphJSONArrayCallback() {
                                @Override
                                public void onCompleted(JSONArray jarray,
                                        GraphResponse response) {
                                    Log.i(TAG, "onCompleted: jsonArray "
                                            + jarray);
                                    Log.i(TAG, "onCompleted: response "
                                            + response);
                                    Toast.makeText(FriendList.this, "result:"+jarray.toString(), Toast.LENGTH_LONG).show();
                                }
                            }));
            batch.addCallback(new GraphRequestBatch.Callback() {

                @Override
                public void onBatchCompleted(GraphRequestBatch batch) {
                    Log.i(TAG, "onbatchCompleted: jsonArray "
                            + batch);

                }
            });
            batch.executeAsync();
            return null;
        }

        @Override
        protected void onPostExecute(String result) {
            if (pdig.isShowing())
                pdig.dismiss();
            super.onPostExecute(result);
        }

        @Override
        protected void onPreExecute() {
            pdig.setTitle("Fetching");
            pdig.setMessage("Fetching facebook friends...");
            //pdig.show();
            Log.i(TAG, "Starting...");
            super.onPreExecute();
        }


    }
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        callbackManager.onActivityResult(requestCode, resultCode, data);
    }
}
package com.miivideos;
导入java.util.array;
导入java.util.List;
导入org.json.JSONArray;
导入android.app.ProgressDialog;
导入android.content.Intent;
导入android.graphics.drawable.ColorDrawable;
导入android.os.AsyncTask;
导入android.os.Bundle;
导入android.util.Log;
导入android.widget.Toast;
导入com.actionbarsherlock.app.SherlockFragmentActivity;
导入com.example.miivideos.R;
导入com.facebook.AccessToken;
导入com.facebook.CallbackManager;
导入com.facebook.GraphRequest;
导入com.facebook.GraphRequestBatch;
导入com.facebook.GraphResponse;
公共类好友列表扩展了SherlockFragmentActivity{
私有静态最终字符串TAG=“FriendList”;
公共静态最终列表权限=Arrays.asList(“发布操作”、“电子邮件”、“用户位置”、“用户朋友”);
私人CallbackManager CallbackManager;
AccessToken AccessToken=AccessToken.getCurrentAccessToken();
@凌驾
创建时受保护的void(包arg0){
super.onCreate(arg0);
setContentView(R.layout.friend_列表);
android.app.ActionBar ab=getActionBar();
ColorDrawable ColorDrawable=新的ColorDrawable(getResources()
.getColor(R.color.green));
ab.可拉深(可彩色拉深);
callbackManager=callbackManager.Factory.create();
新建GetFriendList().execute();
}
类GetFriendList扩展了异步任务{
ProgressDialog pdig=新建ProgressDialog(FriendList.this);
@凌驾
受保护的字符串doInBackground(字符串…参数){
Log.i(标记“在后台工作…”);
//LoginManager.getInstance().logInWithReadPermissions(FriendList.this、Arrays.asList(“用户朋友”);
//Log.i(标记,“具有令牌:”+String.valueOf(AccessToken.getCurrentAccessToken().getPermissions());
GraphRequestBatch=新GraphRequestBatch(
GraphRequest.newMyFriendsRequest(accesstoken,
新的GraphRequest.graphjRayCallback(){
@凌驾
公共空间未完成(JSONArray jarray,
GraphResponse(反应){
Log.i(标记“onCompleted:jsonArray”
+jarray);
Log.i(标记“未完成:响应”
+反应);
Toast.makeText(FriendList.this,“结果:+jarray.toString(),Toast.LENGTH\u LONG.show();
}
}));
batch.addCallback(新GraphRequestBatch.Callback(){
@凌驾
已完成批处理上的公共无效(GraphRequestBatch批处理){
Log.i(标记“onbatchCompleted:jsonArray”
+批次);
}
});
batch.executeAsync();
返回null;
}
@凌驾
受保护的void onPostExecute(字符串结果){
if(pdig.isShowing())
pdig.discouse();
super.onPostExecute(结果);
}
@凌驾
受保护的void onPreExecute(){
pdig.setTitle(“获取”);
setMessage(“获取facebook好友…”);
//pdig.show();
Log.i(标记“开始…”);
super.onPreExecute();
}
}
@凌驾
受保护的void onActivityResult(int请求代码、int结果代码、意图数据){
super.onActivityResult(请求代码、结果代码、数据);
callbackManager.onActivityResult(请求代码、结果代码、数据);
}
}

我终于找到了如何做到这一点,但在sdk 4.1.0中,facebook将只提供正在使用您的应用程序或用户之间的常用应用程序的朋友,而不是所有的朋友列表

GraphRequestBatch batch = new GraphRequestBatch(GraphRequest.newMyFriendsRequest(
                        accesstoken,
                        new GraphRequest.GraphJSONArrayCallback() {
                            @Override
                            public void onCompleted(JSONArray jsonArray, GraphResponse response) {
                                System.out.println("jsonArray: "+jsonArray);
                                System.out.println("GraphResponse: "+response);
                                try {
                                    ArrayList<Friend_List_Load> item_details = new ArrayList<Friend_List_Load>();
                                    for(int i=0; i<jsonArray.length();i++){
                                        JSONObject c=jsonArray.getJSONObject(i);
                                        System.out.println("id: "+c.getString(PROFILE_ID));
                                        System.out.println("name: "+c.getString(NAME));
                                        FriendListAdapter frndadapter=new FriendListAdapter(FriendList.this,item_details);
                                        item_details.add(new Friend_List_Load(c.getString(NAME),c.getString(PROFILE_ID)));
                                        lv_friends.setAdapter(frndadapter);
                                    }                   
                                } catch (JSONException e) {
                                    e.printStackTrace();
                                }

                            }
                        }),
                        GraphRequest.newMeRequest(accesstoken, new GraphRequest.GraphJSONObjectCallback() {

                            @Override
                            public void onCompleted(JSONObject object, GraphResponse response) {
                                System.out.println("meJSONObject: "+object);
                                System.out.println("meGraphResponse: "+response);

                            }
                        })
        );
        batch.addCallback(new GraphRequestBatch.Callback() {
            @Override
            public void onBatchCompleted(GraphRequestBatch graphRequests) {
                //Log.i(TAG, "onCompleted: graphRequests "+ graphRequests);
            }
        });
        batch.executeAsync();
GraphRequestBatch=newgraphrequestbatch(GraphRequest.newMyFriendsRequest(
accesstoken,
新的GraphRequest.graphjRayCallback(){
@凌驾
未完成公共空白(JSONArray JSONArray,图形响应){
System.out.println(“jsonArray:+jsonArray”);
System.out.println(“GraphResponse:+response”);
试一试{
ArrayList item_details=新建ArrayList();

对于(int i=0;i检查更新的文档和facebook android sdk 4.x图形api的新更改


希望这会有帮助。

这应该行得通

而且,如前所述,只返回共享的朋友,加上您的朋友总数

private void getFriends() {
    AccessToken accesstoken = AccessToken.getCurrentAccessToken();
    GraphRequest.newMyFriendsRequest(accesstoken,
            new GraphRequest.GraphJSONArrayCallback() {
                @Override
                public void onCompleted(JSONArray jsonArray, GraphResponse response) {
                    System.out.println("jsonArray: " + jsonArray);
                    System.out.println("GraphResponse: " + response);
                }
            }).executeAsync();
}

嘿,我正在使用上面的代码。完全相同,但在完成时从不调用,,,知道为什么吗?从你的facbook帐户在应用程序设置中检查你的权限,如果没有权限查看朋友列表等,那么该方法将无法执行,因此将永远不会完成。。。。