我使用restfb API以Java访问我的朋友的照片。为了访问这些照片,我使用Graph API explorer手动生成访问代码,并将此作为参数传递给restfb API调用。如何在android中获取facebook用户访问令牌?
但现在我想通过生成的代码(编程)此访问令牌。我见过fb android样本,尤其是hackbook。我没有看到任何可以用于我自己的应用程序的访问代码。我需要创建一个新的应用程序,并获得一些秘密等?任何建议将不胜感激。
我已经看到了这些解决方案(solution-1 & solution-2)在stackoverflow但我仍然没有得到从哪里开始?
更新-1 ::
我使用下面的代码登录并获得访问令牌登录的用户。但问题是,它只适用于我在Facebook上创建应用程序以生成app_id的帐户。它不会收到其他帐户的回电。请提供任何建议。
和公正的情况下,如果你不知道从哪里开始,遵循step-6从头创建一个新的应用程序。
public class MainActivity extends Activity implements OnClickListener {
Button login;
TextView accessToken;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
login = (Button) findViewById(R.id.login);
accessToken = (TextView) findViewById(R.id.accessToken);
login.setOnClickListener(this);
// start Facebook Login
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
@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 onResume()
{
Session session = Session.getActiveSession();
if(session != null)
if (session.isOpened()) {
//Toast.makeText(this, session.getAccessToken(), Toast.LENGTH_LONG).show();
accessToken = (TextView) findViewById(R.id.accessToken);
accessToken.setText(session.getAccessToken());
System.out.println("----------------------" + session.getAccessToken() + "---------------------");
}
super.onResume();
}
@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() + "!");
}
}
});
}
}
});
}
}
感谢您的回答,我不允许创建会话的对象。请让我知道为什么会发生这种情况! – TharakaNirmana 2013-05-11 14:40:34
实际上,如果您从前一个会话中获得空会话,则不需要创建新的Session实例,只需使用'getActiveSession()'方法或'openActiveSession()'。关于这个也请参阅[我的其他答案(http://stackoverflow.com/questions/16140771/login-with-facebook-android-sdk-3-0-using-shared-preferences-session/16143102#16143102) – 5agado 2013-05-11 17:03:19
谢谢你的回复,我的情况有点奇怪。我有一个Facebook对象(Facebook的脸书=新Facebook())。但有了这个对象,我不能调用facebook.getActiveSession()或facebook.openActiveSession()。你能告诉我为什么吗?我的意图是以某种方式创建一个访问令牌,并用params(捆绑)发送它来上传照片。 – TharakaNirmana 2013-05-11 17:13:59