我一直试图通过以下代码在Xamarin Studio中使用Facebook API for Android进行Request.NewMeRequest:
Request.NewMeRequest (currentSession, new Request.IGraphUserCallback() {
override void OnCompleted(IGraphUser user, Response Response){
Console.WriteLine(user.FirstName);
}
}).ExecuteAsync ();
但是Xamarin Studio会出现一些错误,所以我认为我在C#中没有采用正确的方法。有人有一些如何做到这一点的示例代码,或者为什么这不起作用的一些解释?
提前致谢!
修改 感谢@Guilherme的帮助,它现在没有返回任何错误,但我遇到了以下问题:
我已将代码更改为您的答案:
public class MainActivity : Activity, ILocationListener, Request.IGraphUserCallback
{
...
Session currentSession = Session.ActiveSession;
protected override void OnCreate (Bundle bundle)
{
base.OnCreate (bundle);
SetContentView (Resource.Layout.Main);
...
Console.WriteLine ("current session: " + currentSession.AccessToken);
Request.NewMeRequest (currentSession, this).ExecuteAsync();
}
public void OnCompleted (IGraphUser user, Response response)
{
Console.WriteLine (user.Username);
}
...
}
但现在它没有重新调整当前登录用户的用户名。会话不是问题,因为它是正确的。
答案 0 :(得分:1)
当然这不适用于c#,因为它不支持匿名类
让您的类实现IGraphUserCallback并将其作为参数传递,然后:
<?
namespace Application;
use Zend\Db\TableGateway\Feature;
use Zend\Mvc\ModuleRouteListener;
use Zend\Mvc\MvcEvent;
use Zend\ModuleManager\Feature\ServiceProviderInterface;
use Model;
use Zfe;
class Module implements ServiceProviderInterface {
public function onBootstrap(MvcEvent $e) {
$eventManager = $e->getApplication()->getEventManager();
$moduleRouteListener = new ModuleRouteListener();
$moduleRouteListener->attach($eventManager);
$this->initDatabase($e);
}
public function initDatabase($e) {
Feature\GlobalAdapterFeature::setStaticAdapter($e->getApplication()->getServiceManager()->get('Zend\Db\Adapter\Adapter'));
}
public function getConfig() {
return include __DIR__ . '/config/module.config.php';
}
public function getServiceConfig() {
return array(
'factories' => array(
'dbadapter' => new Zfe\Factory('db'),
),
);
}
public function getAutoloaderConfig() {
return array(
'Zend\Loader\StandardAutoloader' => array(
'namespaces' => array(
__NAMESPACE__ => __DIR__ . '/src/' . __NAMESPACE__,
),
),
);
}
}