我面临以下问题:
我有这些类和接口定义
public abstract class ViewModelRefreshPostListFragment<T extends IRefreshPostViewCallback, R extends RefreshPostViewModel<T>>
extends RefreshPostListFragment implements IRefreshPostView {
private final ViewModelHelper<T, R> mViewModeHelper = //error here
new ViewModelHelper<>();
...
}
public abstract class RefreshPostViewModel<R1 extends IRefreshPostViewCallback> extends AbstractViewModel<IRefreshPostViewCallback> {}
public class ViewModelHelper<T extends IView, R extends AbstractViewModel<T>> {}
public abstract class AbstractViewModel<T extends IView> {}
public interface IRefreshPostViewCallback extends IView {}
Run Code Online (Sandbox Code Playgroud)
Eclipse仍然给出了这个错误:绑定不匹配:类型R不是该类型的有界参数<R extends AbstractViewModel<T>>的有效替代ViewModelHelper<T,R>
基于Java继承,我创建了这两个链:
来自ViewModelRefreshPostListFragment类定义的"链"
1)R extends RefreshPostViewModel<T>- > R extends RefreshPostViewModel<R1 …
我需要获取OAuth 2.0的access_token和refresh_token才能访问Google API,下面的php脚本应返回一个带有access_token,refresh_token的json,如下所示:
{
"access_token" : "####",
"token_type" : "Bearer",
"expires_in" : 3600,
"refresh_token" : "####"
}
Run Code Online (Sandbox Code Playgroud)
但是,PHP脚本仅向我返回此错误消息:
{
"error" : "invalid_request",
"error_description" : "Client must specify either client_id or client_assertion, not both"
}
Run Code Online (Sandbox Code Playgroud)
我试图删除client_secret / client_id并仅使用client_id / client_secret,但仍然遇到相同的错误。
{
"access_token" : "####",
"token_type" : "Bearer",
"expires_in" : 3600,
"refresh_token" : "####"
}
Run Code Online (Sandbox Code Playgroud)
虽然cmd中的curl可以正常工作,并且可以返回我访问和刷新令牌,但没有任何错误。
curl --data "code=###&client_id=###.apps.googleusercontent.com&client_secret=###&redirect_uri=http://localhost/phpConnectToDB/csv/refreshFusionTable.php&grant_type=authorization_code" https://accounts.google.com/o/oauth2/token
Run Code Online (Sandbox Code Playgroud)
尽管.php脚本存在并且位于给定的路径上,但我不明白为什么会收到丢失的方案错误。请问你能帮帮我吗 ?
我想让用户有可能在我的应用程序中使用一些外部oauth2提供程序(facebook)登录.客户端部分在本机应用程序中的移动设备上运行.
我不确定下面哪种方法我更喜欢?
A)客户端是否应该在每次请求时通过Facebook发送用户的访问令牌?在每个请求后端要求facebook验证访问令牌.根据验证结果,后端执行授权并将相应的结果返回给客户端.
或者B)后端是否要求facebook 仅在用户登录时验证访问令牌,然后发出自己的访问令牌,将访问令牌返回给客户端,客户端将使用此访问令牌向服务器发出请求以避免与Facebook发生冲突在每个请求?
我已经阅读了一些关于如何使用facebook实现auth的问题,而且大多数开发人员正在使用B,但我没有看到任何解释为什么使用A的好/坏?
我认为解决方案的好处:
A)后端不需要关心发布,刷新,验证访问令牌,因为这只能由facebook的授权服务器完成.
B)这个解决方案似乎更有效,因为它不需要在每次请求时连接到facebook.
我想在对话框窗口中显示图像(保存在项目文件夹中),但是当我运行我的方法 showDialogWithImage 时,我得到 FileNotFoundExcpetion: imgs\pic1.jpg(系统找不到指定的文件),尽管图像位于那里。
我也尝试过以这种方式加载图像:
Image image = new Image(getClass().getResourceAsStream(path));,但遇到了同样的问题。
是否有其他一些可能性将图像加载到 ImageView ?
谢谢你的帮助!
我的 Java 代码位于项目文件夹中的 src\myProject\gui 中。
path="imgs\pic1.jpg" // imgs 位于项目文件夹中
public void showDialogWithImage(String path) {
final Stage dialogStage = new Stage();
logger.info(path);
InputStream is = null;
try {
is = new FileInputStream(path); // here I get FileNotFoundException
} catch (FileNotFoundException e) {
e.printStackTrace();
}
Image image = new Image(is);
ImageView view = new ImageView();
view.setImage(image);
Button btnOK = new Button("OK");
btnOK.setOnAction(new EventHandler<ActionEvent>() {
@Override
public void …Run Code Online (Sandbox Code Playgroud) 他们在AccessToken文档中说:"使用Facebook SDK的原生移动应用程序将获得长期访问令牌,大约可以使用60天.当使用您的应用程序的人向Facebook提出请求时,这些令牌将每天更新一次.服务器".
这是否意味着只有当Facebook服务器的请求来自客户端Android应用程序时(我不确定如何解释"......使用您的应用程序的人..."),那么访问令牌将被刷新?
在我的应用程序中,我使用检索访问令牌AccessToken.getCurrentAccessToken(),将访问令牌发送到我的服务器,服务器向Facebook的服务器发出请求,目的是验证收到的访问令牌.
在这种情况下,是否还会刷新访问令牌?(在这种情况下,服务器正在向FB的服务器发出请求,而不是直接"使用我的应用程序的人")
AccessToken.getCurrentAccessToken()Android客户端是否返回刷新的访问令牌?谢谢
编辑:这可以帮助其他人节省时间:我发现访问令牌在初始化FacebookSDK时会在某些条件下自动刷新(Facebook文档没有清楚地解释访问令牌是如何刷新的 - 请参阅上面的问题).
请注意我使用的是FacebookSDK 4.0 for Android.
按照下面的步骤操作:
FacebookSDK.sdkInitialize(Context, InitializeCallback)
if (AccessToken.getCurrentAccessToken() != null && Profile.getCurrentProfile() == null)
Profile.fetchProfileForCurrentAccessToken()
Utility.getGraphMeRequestWithCacheAsync()
GraphRequest graphRequest = getGraphMeRequestWithCache(accessToken);
graphRequest.setCallback(graphCallback);
graphRequest.executeAsync();
executeBatchAsync(GraphRequestBatch requests)GraphRequestAsyncTask asyncTask = new GraphRequestAsyncTask(requests);
asyncTask.executeOnSettingsExecutor();GraphRequestAsyncTask doInBackground()方法 if (connection == null) {
return requests.executeAndWait();
} else {
return GraphRequest.executeConnectionAndWait(connection, requests);
}
对于这两种情况,代码将以此方法结束:
public static List<GraphResponse> executeConnectionAndWait(
HttpURLConnection connection,
GraphRequestBatch requests)
Run Code Online (Sandbox Code Playgroud)
AccessTokenManager.getInstance().extendAccessTokenIfNeeded();线.顾名思义,每天最多扩展一次访问令牌.facebook facebook-graph-api facebook-authentication facebook-access-token facebook-sdk-4.0
我想使用eclipse链接设置隔离级别,
我尝试了这两种方法:
java.sql.Connection中
mgr = EMF.get().createEntityManager();
tx = mgr.getTransaction();
tx.begin();
java.sql.Connection connection = mgr.unwrap(java.sql.Connection.class);
connection.setTransactionIsolation(java.sql.Connection.TRANSACTION_READ_COMMITTED);
System.out.println("Connection: "+connection.getTransactionIsolation());
//prints TRANSACTION_READ_COMMITED as expected
org.eclipse.persistence.sessions.DatabaseLogin databaseLogin = new DatabaseLogin();
System.out.println("DatabaseLoging: "+databaseLogin.getTransactionIsolation());
//prints -1, representing transaction isolation is not set
Run Code Online (Sandbox Code Playgroud)DatabaseLogin setTransationIsolation方法
mgr = EMF.get().createEntityManager();
tx = mgr.getTransaction();
tx.begin();
org.eclipse.persistence.sessions.DatabaseLogin databaseLogin = new DatabaseLogin();
databaseLogin.setTransactionIsolation(DatabaseLogin.TRANSACTION_READ_COMMITTED);
System.out.println("DatabaseLoging: "+databaseLogin.getTransactionIsolation());
//prints TRANSACTION_READ_COMMITED as expected
java.sql.Connection connection = mgr.unwrap(java.sql.Connection.class);
System.out.println("Connection: "+connection.getTransactionIsolation());
//prints TRANSACTION_REPEATABLE_READ
Run Code Online (Sandbox Code Playgroud)如您所见,getTransacationIsolation()方法的返回值之间存在一些不一致.我的问题是,在两种情况下都确实设置了哪种事务隔离?我知道默认情况下eclipse链接使用不同的连接进行读写操作,DatabaseLogin.setTransactionIsolation应该为两个连接设置隔离级别,那么为什么Connection.getTransactionIsolation仍然返回另一个隔离级别?
我正在使用应用程序范围的EntityManager,JPA 2.0,EclipseLink 2.5.2.
如果有更好的方法设置事务隔离,请告诉我.
是否有一些 API,我可以使用它来读取 Android 设备上每个 NFC 的信用卡信息?或者是否可以使用某些 API 检索每个信用卡唯一的 ID?
我尝试过看起来很棒的Triangle IO,但他们的服务器似乎无法工作,因为我已经克隆了他们的示例 github 项目,并且还注册了一个密钥,正如他们在设置教程中所要求的那样。但是当我在 Android 上安装该应用程序时,出现错误:“提供的应用程序信息无效。请仔细检查您的应用程序 ID、访问 ID ...”。
然后我从 Google Play 下载了他们的官方示例应用程序。它给了我同样的错误。因此我假设 Triangle IO 服务器无法工作,是否有人使用 Triangle 并可以向我确认这一点?
java ×2
oauth-2.0 ×2
access-token ×1
android ×1
credit-card ×1
curl ×1
eclipse ×1
eclipselink ×1
facebook ×1
generics ×1
google-api ×1
http-post ×1
javafx ×1
javafx-2 ×1
jpa ×1
nfc ×1
php ×1
security ×1